MongoDB是最接近mysql的一种nosql
默认端口:27017
MongoDB 基础命令
- 进入mongo:mongo
- 基础命令启动 mongod
- 加文件的启动 mongod -dbpath 路径
- 加端口的启动 mongod --port
- 后台启动mongod &
- 将MongoDB设置成后台服务,每次开机就会启动(看官网)
1.创建db 创建log mkdir db/data mkdir db/logs
2.在MongoDB的bin目录下创建一个配置文件, mongod.cfg
3.以管理员身份运行命令窗口
4.执行命令 后面加上参数 start="auto" 具体命令看 MongoDB的官网 5.启动 连接 mongo用来启动客户端
基本概念
- 数据库database
数据库是一个仓库,在仓库中可以存放集合 - 集合collection
集合类似于数组,在集合中可以存放文档 - 文档document
文档数据库中的最小单位,我们存储和操作的内容都是文档
基础命令 (对文档进行增删改查)
- 显示所有的数据库
show dbs;
show databases; - 进入指定的数据库中
use test; - 查看当前所处的数据库
db - 查看数据库中的集合
show collections; - 增删改查
MongoDB 插入文档
db.<COLLECTION>.insert(document)
db.stus.insert({"name":"zhangsan","age":18,"gender":"男"});
# 插入一条
insertone()
插入多条,用数组
insertmany()
db.stus.insert([{1},{2},{3}]);
增加多条记录,循环+函数
for (var i=1;i<20000;I++){db.user,insert({num:i})}
var arr = [] ; for (var i=1;i<20000;I++) (arr.push({num:i});) db.user.insert(arr)
当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档增加_id,该属性用来作为文档的唯一标示,根据时间戳生成的,调用ObjectId()方法会自动生成
- 查询当前集合中的所有文档
db.collection.find()
db.stus.find()
返回的是一个数组
返回的数据可以通过下标访问db.stus.find()[2]
find().count() 查询所有的记录条数
find() 查询集合中所有符合条件的文档
没条件就是找所有的
find({})
find()
传条件find({字段名:"属性",字段名:"属性"})
find({name:"zhangsan"})
find({name:"zhangsan",gender:"男"})
findone() 查询集合中符合条件的第一个文档,返回的是一个文档对象,可以直接对象.属性名
如果要通过内嵌文档来对文档进行查询,此时属性名必须使用引号(单双引号都可以)
db.users.find({'hobby.movies':"hero"})
大于 查询num大于500的记录
db.collection.find({num:{$gt:500}})
$gt $gte $lt $lte $eq
查询显示前10条
db.collection.find().limit(10)
分页功能
db.collection.find().skip(10).limit(10)
skip() 用于跳过指定数量的数据
db.collection.find().skip(页码-1).limit(每页显示的条数)
skip和limit写的顺序没有关系,MongoDB会自动调整他俩的顺序
- 修改文档
db.collection.update(查询条件,新对象)
update默认会使用新对象替换之前的整个文档对象
修改指定对象而非替换
db.collection.updateone({查询条件},{$set:{name:"zhangsan","id_no":11111111}})
常见的操作符
set
设置属性值
unset
删除属性值
db.collection.update({name:"zhangsan"},{name:'lisi'})
db.collection.updateone
db.collection.updatemany
update默认情况下只会改一个
替换一个文档db.collection.replaceone()
数组修改
覆盖 $set
追加 $push
追加 $addtoset
区别:addtoset只会增加不重复的记录,如果数组中已经存在该元素,则不会添加
自增 $inc
- 删除文档
db.collection.remove(条件)
删除符合条件的所有文档,默认情况删除多个
如果只想删除一个,加参数 justone:true
db.collection.remove(age:28,true)
remove()必须传参
如果传一个空对象,就会清空集合 remove({}),集合还在
db.collection.deleteone()
db.collection.deletemany()
删除集合 db.stus.drop(),数据库也会被删除,如果数据库中只有一个集合的话
- sort+投影
sort
默认id自增
sort() 指定文档的排序规则 sort(‘s’:1) 1表示升序排列 -1表示降序排练 可以多个排序条件
d.user.find({}).sort()
limit() sort() skip() 无顺序
投影 只展示具体的字段,id默认展示
d.user.find({},{name:1,_id:0}) 展示name,不展示_id
网友评论