Mongodb 3.6版本的福利好吧!
谢谢观看,转载请标注来源Thanks!©PerfumerKarma
官网文档地址:
https://docs.mongodb.com/manual/reference/operator/update/positional-all/#up.S[]
想做一个学习导向社区,弄出来后先自己的学校试试吧,也不知道咋样,前端很丑哈哈哈,个人最近才有点时间边学边搭建吧
http://plog.top
后端使用的Redis 5.2
和 mongodb 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']
在arrayFilters
中e
代表每一项子文档,通过e.b
对指定项进行过滤
帮助我们对子文档进行查找的工具
一、 $elemMatch
二、 $size
三、$all
四、$or
五、$in
谢谢观看,转载请标注来源Thanks!