MongoDB文档更新(一)
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,MongoDB文档更新:1.可以是采用删除原文档然后插入一个更新后的新文档到数据库中;2.基于原文档使用修改器修改原文档中的文档属性。下面主要说明的是使用基于原文档使用update方法结合修改器修改文
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
数据库名称是啥
顺网is648服务器
桌面关于蓝牙手环软件开发
迅雷类似软件开发
内蒙古博赛网络技术有限公司
妇联网络安全宣传版面
原神更换服务器后号需要重新玩嘛
腾讯软件开发工程师待遇
武汉大学计算机网络安全
无锡博世软件开发中心图片
如何提高内部服务器安全
vb检验sql数据库
驻马店市三耶三软件开发有限公司
app软件开发前途怎么样
现在哪个服务器cpu适合打游戏
自己的主机可以做小程序服务器吗
携程网络技术有限公司怎么样
服务器管理器怎么搭建网站
河北北方互联网科技公司
数据库同一张表数据相同怎么区分
数据库和仓储
重庆企业软件开发报价
sql数据库入门书籍
远程服务器怎么重启
人事管理数据库系统
如何表格导出数据库
软件开发cs和bs区别
网络安全成长日志
苏州办公系统软件开发多少钱
银川市软件开发企业