MongoDB中的子文档批量更新

Mongodb 3.6版本的福利好吧!

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

官网文档地址:

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

想做一个学习导向社区,弄出来后先自己的学校试试吧,也不知道咋样,前端很丑哈哈哈,个人最近才有点时间边学边搭建吧

http://plog.top

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

好了步入正题

$、$[] 、$[identifier]、{arrayFilters,...}

$ 匹配子文档中的第一项,使用它最多只能更新一个子文档。

$[] 匹配子文档中的所有项,向强大的SQL老哥又迈进一步,

然而这个功能还是过于鸡肋,因为我们批量更新子文档是要有条件的

(1)不是全部更新,更新部分字段 或 部分子文档

(2)更新子文档需要过滤条件

1. Operator $ Only match one
在这里插入图片描述
在这里插入图片描述
2. Operator $[] match all
在这里插入图片描述在这里插入图片描述

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

其实他就是过滤之后的下标中的引用,注意不是下标哦,看看这个吧
在这里插入图片描述

比如你的嵌套子文档是,并且你需要批量更新子文档中某一字段 x

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,3] 这是 subDocument[index]
现在我们加上过滤条件 "y <= 2" 过滤后结果是 [0,1]
score in [0,1], 是不是很熟悉的 for-in 循环
在这里插入图片描述

注意这里使用的下标是 [e] 而不是 ['e.b']arrayFilterse代表每一项子文档,通过e.b对指定项进行过滤
在这里插入图片描述
在这里插入图片描述

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

一、 $elemMatch
在这里插入图片描述
在这里插入图片描述

二、 $size
在这里插入图片描述

三、$all
在这里插入图片描述

四、$or

在这里插入图片描述

五、$in

在这里插入图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值