03 MongoDB文档的各种增加更新删除操作总结
Posted cui_yonghua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03 MongoDB文档的各种增加更新删除操作总结相关的知识,希望对你有一定的参考价值。
目录:基础篇(能解决工作中80的问题)
01 MongoDB的概述、应用场景、下载方式、连接方式和发展历史等
02 MongoDB数据类型、重要概念以及shell常用指令
一. 插入文档
注意: 在 MongoDB 中,直接插入内容会自动创建集合!
1.1 使用insert()方法
语法格式: db.COLLECTION_NAME.insert(document)
说明: 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
案例: 如向集合user_demo中插入一条数据:
db.user_demo.insert("name":"zhangsan", "age": 18)
# 相当于sql中的
insert into user_demo(name, age) values("zhangsan", 18);
1.2 使用save()方法(新版本中已废弃)
语法格式: db.COLLECTION_NAME.save(document)
说明: 如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
1.3 使用insertOne()方法 (3.2版本新增)
语法格式: db.collection.insertOne()
说明: 向指定集合中插入一条文档数据, 可指定参数:
writeConcern: 写入策略,默认为 1,即要求确认写操作,0 是不要求。
案例: 如向集合user_demo中插入一条数据:
db.user_demo.insertOne("name":"zhangsan", "age": 18)
1.4 insertMany()方法 (3.2版本新增)
语法格式: db.collection.insertMany()
说明: 向指定集合中插入多条文档数据, 可指定参数:
writeConcern: 写入策略,默认为 1,即要求确认写操作,0 是不要求;
ordered:指定是否按顺序写入,默认 true,按顺序写入。
案例: 如向集合user_demo中插入2条数据:
db.user_demo.insertMany(["name":"zhangsan", "age": 18, "name":"lisi", "age": 20])
二. 更新文档
2.1 使用 update() 方法
语法格式:
db.collection.update(
<query>,
<update>,
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
)
说明: 更新集合中的文档, 可指定参数:
query
: update的查询条件,类似sql update查询内where后面的;
update
: update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的;
upsert
: 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入;
multi
: 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新;
writeConcern
:可选,抛出异常的级别。
案例: 如向集合user_demo中名称为zhangsan的用户的age更新成21:
db.user_demo.update('name':'zhangsan',$set:'age': 21)
# 相当于sql中的
update article set age = 21 where name > 'zhangsan';
2.2 使用 save() 方法
语法格式:
db.collection.save(
<document>,
writeConcern: <document>
)
说明: save() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入, 可指定参数:
document
: 文档数据;
writeConcern
:可选,抛出异常的级别。
案例: 如向集合user_demo中替换 _id 为 56064f89ade2f21f36b03136的文档数据
db.user_demo.save("_id" : ObjectId("56064f89ade2f21f36b03136"),
"name": "wangwu",
"age": 23)
# 更新之后可查看结果
db.user_demo.find().pretty()
3.3 MongoDB 3.2版本新增的方法
更新一条:db.collection.updateOne()
, 参考:MongoDB官网-updateOne操作
更新多条:db.collection.updateMany()
, 参考:MongoDB官网-updateMany操作
替换1条:db.collection.replaceOne()
, 参考:MongoDB官网-replaceOne操作
三. 删除文档
注意:在删除文档前先执行 find() 命令来判断执行的条件是否正确,这是一个比较好的习惯。
3.1 使用 remove() 方法删除文档
语法格式: 2.6版本以后
db.collection.remove(
<query>,
justOne: <boolean>,
writeConcern: <document>
)
说明:用来移除集合中的数据,参数说明:
query
:(可选)删除的文档的条件。
justOne
: (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern
:(可选)抛出异常的级别。
案例: 如在集合user_demo中移除名为zhangsan的数据:
db.user_demo.remove("name":"zhangsan")
db.user_demo.find() # 发现没有名为zhangsan的数据了
# 相当于sql中的
delete from user_demo where name = "zhangsan"
注意:remove() 方法已经过时了,现在官方推荐使用 deleteOne() 和 deleteMany() 方法。
3.2 使用 deleteOne() 方法删除文档
如删除user_demo集合下 status 等于 D 的一个文档:
db.inventory.deleteOne( status: "D")
3.3 使用 deleteMany() 方法删除文档
如删除user_demo集合下全部文档:db.user_demo.deleteMany()
如删除user_demo集合下 status 等于 A 的全部文档:db.user_demo.deleteMany(status :"A")
四. bulk-write 操作
MongoDB批量操作支持同时执行一批写操作,写操作包括:插入文档、更新文档、删除文档。
官网参考: MongoDB官网的bulk-write操作
bulkWrite 批量操作支持下面写操作自由组合。
- insertOne - 插入一个文档
- updateOne - 更新一个文档
- updateMany - 更新一批文档
- replaceOne - 替换一个文档
- deleteOne - 删除一个文档
- deleteMany - 删除一批文档
语法格式:
# operation - 代表写操作配置
# bulkWrite接收一个写操作数组。
db.collection.bulkWrite(
[ <operation 1>, <operation 2>, ... ],
)
mongo shell通过db.collection.bulkWrite()函数执行批量操作。
综合案例:
db.inventory.bulkWrite(
[
// 插入一个文档
insertOne :
// 文档内容
"document" :
"_id" : 4, "char" : "Dithras", "class" : "barbarian", "lvl" : 4
,
insertOne :
"document" :
"_id" : 5, "char" : "Taeln", "class" : "fighter", "lvl" : 3
,
// 更新一个文档,updateMany 更新一批文档类似
updateOne :
// 更新条件
"filter" : "char" : "Eldon" ,
// 更新内容
"update" : $set : "status" : "Critical Injury"
,
// 删除一个文档,deleteMany删除多个文档类似
deleteOne :
// 删除条件
"filter" : "char" : "Brisbane"
,
// 替换一个文档
replaceOne :
// 替换条件
"filter" : "char" : "Meldane" ,
// 替换内容
"replacement" : "char" : "Tanys", "class" : "oracle", "lvl" : 4
]
);
附:官网crud操作:官网crud操作
❤️ 如果觉得有用,感谢一键三连哦 !!!❤️
以上是关于03 MongoDB文档的各种增加更新删除操作总结的主要内容,如果未能解决你的问题,请参考以下文章