MongoDB文档更新(一)
发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,MongoDB文档更新:1.可以是采用删除原文档然后插入一个更新后的新文档到数据库中;2.基于原文档使用修改器修改原文档中的文档属性。下面主要说明的是使用基于原文档使用update方法结合修改器修改文
千家信息网最后更新 2025年02月21日MongoDB文档更新(一)
> db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "age" : 16, "name" : "user16" }
往用户为user16的文档中添加一本书:
> db.c1.update({"age":16},{"$set":{"book":"love story"}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "age" : 16, "book" : "love story", "name" : "user16" }
增加了"book"属性,并添加了一本书。
2.$unset修改器:与$set相对应,可以去掉某一个属性值。
如要删上面文档中的"book"属性,可使用:
db.c1.update({"age":16},{"$unset":{"book":1}}); 结果是:
> db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "age" : 16, "name" : "user16" }其中的"book"属性被删除掉,"1"删除掉book属性。
3.使用$set,$unset修改嵌套文档:
如下嵌套文档: { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "108991" }, "age" : 16, "name" : "user16" }
修改其中的zip属性为"111111": > db.c1.update({"age":16},{"$set":{"address.zip":"111111"}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "name" : "user16" }
注意,在修改文档的时候不要忘记使用"$set"修改器,否则的话原来的文档会被 {"address.zip":"111111"}替代。
4.数组修改器:对数组的修改,一般包括:添加元素值,删除元素值。
1).首先往一个文档里面添加一个数组,比如在这里往:
db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "name" : "user16" }
添加一个"luckyNumber":[1,8,0]的键值对。可以使用前面的$set完成此操作。
> db.c1.update({"age":16},{"$set":{"luckyNumber":[1,8,0]}});
>db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "luckyNumber" : [ 1, 8, 0 ], "name" : "user16" }
2).$push修改器:往"lucyNumber"中压入一个数字,使用此修改器是往数组末尾追加一个数字。
如:db.c1.update({"age":16},{"$push":{"luckyNumber":9}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "luckyNumber" : [ 1, 8, 0, 9 ], "name" : "user16" }
其中luckyNumber多了一个数字9. 如果继续使用db.c1.update({"age":16},{"$push":{"luckyNumber":9}});会在再多出一个9.(此处省略)。
3).$addToSet修改器:把数组当成一个类似于set集合,其中不能存放相同的值。
如在2)的文档中使用:db.c1.update({"age":16},{"$addToSet":{"luckyNumber":9}}); 结果会是:
db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "luckyNumber" : [ 1, 8, 0, 9 ], "name" : "user16" }
其中luckyNumber还是只有一个9.
4).$pop数组数据弹出:{"$pop":{key:1}}弹出数组尾部数据,{"$pop":{key:-1}}弹出数组首部数据,
如要弹出luckyNumber的末尾数"9":
> db.c1.update({"age":16},{"$pop":{"luckyNumber":1}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"),
"address" : { "location" : "linkin street no5", "zip" : "111111" },
"age" : 16,
"luckyNumber" : [ 1, 8, 0 ],
"name" : "user16" }
弹出luckyNumber中的首位数1: > db.c1.update({"age":16},{"$pop":{"luckyNumber":-1}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"),
"address" : { "location" : "linkin street no5", "zip" : "111111" },
"age" : 16,
"luckyNumber" : [ 8, 0 ],
"name" : "user16" }
其中的1被弹出。
以上是关于文档基本属性和数组属性的更新最基本的操作。
MongoDB文档更新:1.可以是采用删除原文档然后插入一个更新后的新文档到数据库中;2.基于原文档使用修改器修改原文档中的文档属性。
下面主要说明的是使用基于原文档使用update方法结合修改器修改文档内容:
修改的数据结构包括文档中的简单属性、数组和嵌套文档。
1.$set修改器:用来指定文档中某一个键的值,如果此键不存在的话就创建。
如要修改如下文档:
> db.c1.find({"name":"user3"});
{ "_id" : ObjectId("4fc145e3703fa637a073651b"), "name" : "user3", "age" : 16 }
> db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "age" : 16, "name" : "user16" }
往用户为user16的文档中添加一本书:
> db.c1.update({"age":16},{"$set":{"book":"love story"}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "age" : 16, "book" : "love story", "name" : "user16" }
增加了"book"属性,并添加了一本书。
2.$unset修改器:与$set相对应,可以去掉某一个属性值。
如要删上面文档中的"book"属性,可使用:
db.c1.update({"age":16},{"$unset":{"book":1}}); 结果是:
> db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "age" : 16, "name" : "user16" }其中的"book"属性被删除掉,"1"删除掉book属性。
3.使用$set,$unset修改嵌套文档:
如下嵌套文档: { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "108991" }, "age" : 16, "name" : "user16" }
修改其中的zip属性为"111111": > db.c1.update({"age":16},{"$set":{"address.zip":"111111"}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "name" : "user16" }
注意,在修改文档的时候不要忘记使用"$set"修改器,否则的话原来的文档会被 {"address.zip":"111111"}替代。
4.数组修改器:对数组的修改,一般包括:添加元素值,删除元素值。
1).首先往一个文档里面添加一个数组,比如在这里往:
db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "name" : "user16" }
添加一个"luckyNumber":[1,8,0]的键值对。可以使用前面的$set完成此操作。
> db.c1.update({"age":16},{"$set":{"luckyNumber":[1,8,0]}});
>db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "luckyNumber" : [ 1, 8, 0 ], "name" : "user16" }
2).$push修改器:往"lucyNumber"中压入一个数字,使用此修改器是往数组末尾追加一个数字。
如:db.c1.update({"age":16},{"$push":{"luckyNumber":9}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "luckyNumber" : [ 1, 8, 0, 9 ], "name" : "user16" }
其中luckyNumber多了一个数字9. 如果继续使用db.c1.update({"age":16},{"$push":{"luckyNumber":9}});会在再多出一个9.(此处省略)。
3).$addToSet修改器:把数组当成一个类似于set集合,其中不能存放相同的值。
如在2)的文档中使用:db.c1.update({"age":16},{"$addToSet":{"luckyNumber":9}}); 结果会是:
db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"), "address" : { "location" : "linkin street no5", "zip" : "111111" }, "age" : 16, "luckyNumber" : [ 1, 8, 0, 9 ], "name" : "user16" }
其中luckyNumber还是只有一个9.
4).$pop数组数据弹出:{"$pop":{key:1}}弹出数组尾部数据,{"$pop":{key:-1}}弹出数组首部数据,
如要弹出luckyNumber的末尾数"9":
> db.c1.update({"age":16},{"$pop":{"luckyNumber":1}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"),
"address" : { "location" : "linkin street no5", "zip" : "111111" },
"age" : 16,
"luckyNumber" : [ 1, 8, 0 ],
"name" : "user16" }
弹出luckyNumber中的首位数1: > db.c1.update({"age":16},{"$pop":{"luckyNumber":-1}}); > db.c1.find({"age":16}); { "_id" : ObjectId("4fc145e3703fa637a073651b"),
"address" : { "location" : "linkin street no5", "zip" : "111111" },
"age" : 16,
"luckyNumber" : [ 8, 0 ],
"name" : "user16" }
其中的1被弹出。
以上是关于文档基本属性和数组属性的更新最基本的操作。
文档
属性
数组
修改器
数据
更新
数字
元素
末尾
结果
相同
中压
位数
内容
只有
尾部
数据库
数据结构
方法
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
通州市网络广播服务器
数据库技术全套视频
高级网络安全教学视频
广州大行情网络技术有限公司
17年自考计算机网络技术
sql数据库 app
捕鱼来了服务器
当前学生网络安全问题的特点
杭州电商软件开发价钱
169美图软件开发
数据库集合操作算重复吗
美信网络技术有限公司待遇
网络安全国家安全依附于
x86 arm服务器
数据库小视频教程
制定网络安全的计划
如何使用数据库制作大量文件
网络安全空间内容
银行系统数据库总结干货
潍坊网络安全宣传周
新榜网络技术工作室
网络安全之数
指定代理服务器
广州汇洋网络技术有限公司
国家安全与网络安全观后感
组装一台服务器cpu电脑
电脑里可以装多个数据库吗
网络安全技术防火墙应用
为什么幽灵行动连不上服务器
vb 数据库登录界面