0%

【MongoDB】MongoDB操作

MongoDB操作


1 常用命令

1.1 数据库操作

1
2
3
4
5
6
7
8
# 查看所有数据库
show dbs

# 切换到指定数据库,不存在则创建
use [数据库名]

# 删除当前数据库
db.dropDatabase()

1.2 集合操作

1
2
3
4
5
6
7
8
9
10
11
# 查看集合
show collections

# 创建集合
db.createCollection("[集合名]")

# 创建集合(带参)
db.createCollections("[集合名]", "[参数]")

# 删除集合
db.[集合名].drop()
参数 类型 描述
capped 布尔 (可选) true,则创建一个固定大小的集合,达到最大值时,不会自动扩容
size 数值 (可选) 为固定大小的集合设置最大值
max 数值 (可选) 指定固定集合中文档的最大数量

2 安全认证

2.1 创建管理员账号

1
2
3
4
5
6
7
8
9
10
11
# 切换到admin库
use admin

# 创建管理员
db.createUser({user:"[用户名]",pwd:"[密码]",roles:["root"]})

# 查看所有用户信息
show users

# 删除用户
db.dropUser("[用户名]")
1
2
3
4
5
6
# 以安全验证形式启动mongodb
mongod --auth

# 密码登录mongodb
# 6.x(需要安装mongoshell)
mongosh [mongodb地址:127.0.0.1:27017] -u [用户名] -p [密码] --authticationDatabase=admin

3 文档操作

3.1 插入文档

1
2
3
4
5
# 插入单个数据(已存在则报错)
db.[集合名].insertOne("Json数据")

# 插入多条数据
db.[集合名].insertMany(["Json数据", "Json数据"])

3.2 查询文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查询数据
db.[集合名].find([查询条件], [返回字段])
* 返回字段:不传时默认查询全部字段
* 例:db.user.find({sex:"男"},{username:1,sex:1})

# 查询第一条数据
db.[集合名].findOne([查询条件],[返回字段])

# 排序
db.[集合名].find([查询条件],[返回字段]).sort({[排序字段]:1})
* 1正序 -1倒序

# 分页
db.[集合名].find([查询条件],[返回字段]).skip([跳过数据数]).limit([限制数据数])
  • 条件查询
    sql条件 mongo条件
    a = 1 {a:1}
    a != 1 {a:{$ne:1}}
    a > 1 {a:{$gt:1}}
    a >= 1 {a:{$gte:1}}
    a < 1 {a:{$lt:1}}
    a <= 1 {a:{$lte:1}}
sql条件 mongo条件
a = 1 AND b =1 {a:1, b=1} 或者 {$and:[{a,1},{b,1}]}
a = 1 OR b = 1 {$or:[{a:1},{b:1}]}
a IS NULL {a:{$exists:false}}
a IN (1,2,3) {a:{$in:[1,2,3]}}
a NOT IN (1,2,3) {a:{$nin:[1,2,3]}}
a like %xxx% {a:{$regex:”xxx”}} 或者 {a:/xxx/} 其中xx为正则表达式

3.3 更新文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 更新
db.[集合名].update([更新条件],[更新内容],[更新参数])
* 更新参数:
* upsert: (可选) saveOrUpdate,不存在则进行插入,参数true /false, 默认false
* multi: (可选) 是否全部更新满足条件的数据,默认false,只更新第一条数据
* writeconcern: (可选) 决定一个写操作落到多少个节点上才算成功

# 更新第一条数据
db.[集合名].updateOne([更新条件],[更新内容],[更新参数])

# 更新全部数据
db.[集合名].updateMany([更新条件],[更新内容],[更新参数])

# 更新不存在,则插入
db.[集合名].upsert([更新条件],[更新内容],[更新参数])

# 替换文档json内容
db.[集合名].replace([更新条件],[替换内容json])

# 返回文档内容并更新数据
db.[集合名].findAndModify({query:[查询条件],update:[更新内容],new:[ture/false]})
* new: true返回更新后的值,false返回更新前的值,默认false

# 更新并返回文档
db.[集合名].findAndUpdate({query:[查询条件],update:[更新内容],new:[ture/false]})

# 替换并返回文档
db.[集合名].findAndReplace({query:[查询条件],update:[更新内容],new:[ture/false]})
操作符 描述 格式
$set 指定字段更新值 {$set:{[字段名]:[值]}}
$unset 删除一个字段 {$unset:{[字段名]:1}}
$inc 数值增加 {$inc:{[字段名]:值}}
$rename 修改字段名称 {$rename:{[旧字段名]:[新字段名]}
$push 数组字段添加值 {$push:{[字段名]:[值]}}
$pushAll 数组字段批量添加值 {$pushAll:{[字段名]:[数组值]}}
$pull 数组字段中删除值 {$pul:{[字段名]:[值]}
$addToSet 数组字段添加值,并去重 {$addToSet:{[字段名]:[值]}}
$pop 删除数组第一or最后一个元素 {$pop:{[字段名]:1}}

3.4 删除文档

1
2
3
4
5
6
7
8
9
10
11
12
# 删除文档
db.[集合名].remove([删除条件], [justOne])
* justOne:ture只删除1条数据,false删除全部匹配的数据,默认false

# 删除一个文档
db.[集合名].deleteOne([删除条件])

# 删除全部文档
db.[集合名].deleteMany([删除条件])

# 删除并返回文档
db.[集合名].findOneAndDelete([删除条件])