MongoDB中的子文档批量更新

Mongodb 3.6版本的福利好吧!

官网:https://docs.mongodb.com/manual/reference/operator/update/positional-all/#up.S[]

以前好像自己需要些循环遍历之后再进行$set更新

目前在做一个编程学习导向性社区,做出来现在自己的学校试试吧,也不知道咋样,前端很丑哈哈哈

http://plog.top 个人最近才有点时间边学边搭建吧

后端使用的Redis 5.2 和 mongodb 4.2 他们都说新版天坑,果然不假,这自己写代码的时间和查文档的时间居然能成 3:1的关系我也是醉了

好了步入正题 [] 、$[identifier]、{arrayFilters,…}

$很早版本就能够使用了

但是呢他只会顺序的匹配到嵌套子文档中的第一个匹配项,也就是说使用它最多只能更新一个子文档。

$[] 3.6版本出来后 就能够对多个文档和多个子文档同时操作了,向强大的Sql老哥又迈进一步,

这是在挑衅啊~,然后这个功能还是过于鸡肋,

毕竟我们批量更新子文档又

(1)不是全部更新,只是部分字段

(2)更新子文档要条件的好吧,需要过滤的

哎~我说话不好听,上点图片压压惊

你肯定想问 wtf,这里的score是个什么鬼

其实他就是过滤之后的下标中的引用

比如你的嵌套子文档是 subDocument:[{x:1,y:1},{x:1,y:2},{x:1,y:3},{x:2,y:2}]

你需要更新子文档中 subDocument.x(dont panic!)这里是mongodb自己杜撰的写法,,这个其实应该是 subDocument.index.x == 1

所以我们得到的子文档的匹配数组索引列表就应该是 [0,1,2] 这是 subDocument中的数组下标

假如我们加了过滤条件 “y <= 2” 这样第3项下标2就被过滤掉了 成了 [0,1]

score in [0,1]


注意这里使用的下标是 [e] 而不是 [‘e.b’] 在arrayFilters中e代表每一项子文档,通过e.b对指定项进行过滤

帮助我们对子文档进行查找的工具

一 $elemMatch

二、 $size

三、$all


四、 o r ! [ ] ( h t t p s : / / i m g b l o g . c s d n i m g . c n / 20190930114938420. p n g ? x o s s p r o c e s s = i m a g e / w a t e r m a r k , t y p e Z m F u Z 3 p o Z W 5 n a G V p d G k , s h a d o w 1 0 , t e x t a H R 0 c H M 6 L y 9 i b G 9 n L m N z Z G 4 u b m V 0 L 3 F x X z Q x N z Y z N j U 0 , s i z e 1 6 , c o l o r F F F F F F , t 7 0 ) or ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190930114938420.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNzYzNjU0,size_16,color_FFFFFF,t_70) 五、 or![](https://imgblog.csdnimg.cn/20190930114938420.png?xossprocess=image/watermark,typeZmFuZ3poZW5naGVpdGk,shadow10,textaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNzYzNjU0,size16,colorFFFFFF,t70)in

谢谢观看,转载请标注来源Thanks

全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
AI牛可乐:哇,听起来你遇到了什么挑战呢!🐮牛可乐在这里,虽然小,但是勇敢又聪明,想听听你的具体情况哦!如果你愿意的话,可以点击我的头像给我私信,我们可以一起想办法应对挑战,好不好呀?🌟🎉
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
440109次浏览 4488人参与
# 春招别灰心,我们一人来一句鼓励 #
41383次浏览 524人参与
# 阿里云管培生offer #
119693次浏览 2219人参与
# 地方国企笔面经互助 #
7916次浏览 18人参与
# 虾皮求职进展汇总 #
113709次浏览 881人参与
# 实习,投递多份简历没人回复怎么办 #
2453743次浏览 34846人参与
# 北方华创开奖 #
107260次浏览 599人参与
# 实习必须要去大厂吗? #
55563次浏览 960人参与
# 同bg的你秋招战况如何? #
75265次浏览 549人参与
# 提前批简历挂麻了怎么办 #
149784次浏览 1977人参与
# 投递实习岗位前的准备 #
1195605次浏览 18546人参与
# 你投递的公司有几家约面了? #
33166次浏览 188人参与
# 双非本科求职如何逆袭 #
661802次浏览 7394人参与
# 机械人春招想让哪家公司来捞你? #
157587次浏览 2267人参与
# 如果公司给你放一天假,你会怎么度过? #
4717次浏览 54人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11266次浏览 263人参与
# 发工资后,你做的第一件事是什么 #
12368次浏览 61人参与
# 工作中,努力重要还是选择重要? #
35546次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20072次浏览 240人参与
# 实习想申请秋招offer,能不能argue薪资 #
39211次浏览 314人参与
# 我的上岸简历长这样 #
451881次浏览 8088人参与
# 非技术岗是怎么找实习的 #
155832次浏览 2120人参与
牛客网
牛客企业服务