MongoDB文档更新(一)
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,MongoDB文档更新:1.可以是采用删除原文档然后插入一个更新后的新文档到数据库中;2.基于原文档使用修改器修改原文档中的文档属性。下面主要说明的是使用基于原文档使用update方法结合修改器修改文
千家信息网最后更新 2025年11月06日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安全错误
数据库的锁怎样保障安全
一招网络技术有限公司
广东省历年gdp数据库
零基础可以学好数据库吗
软件测试和计算机网络技术
高第网络技术王磊
网络安全问题及对策论文答辩自述
多级数据库是什么意思
网络安全 研究生做啥
工厂的产品网络安全是
全域高精度数据库建造
无法打开所请求的数据库
数据库和网站分开部署
明日之后一打开聊天就服务器中断
电信服务器集采视频
网络安全保卫局别称
服务器总是满载
客户端连接数据库时sa登陆失败
sip服务器搭建
龙岗软件开发哪家效益快
ftp服务器设置登录密码
读取mysql数据库偶尔会乱码
世纪瑞尔网络安全
涉密项目软件开发
按键精灵用户服务器设置
时序数据库与mysql性能对比
mysql导出数据库几种方法
用友t3的数据库目录
创建数据库并设置编码utf8
河南兰考网络安全工作
服务器pe进不去怎么重置密码