$[] 实现的功能就是数组中的所有元素, 与Mongodb的 $[] 一致。
但文档描述且说是能更新匹配的所有数组元素。 可以误解为$[] 实现了 与Mongodb 中 $[idenfier]的功能。
文档描述 $[] 是更新数组中所有匹配的元素, 而实际运行的结果是, 数组的所有元素。
测试数据
{"_id":"8f75309d62972ff30684c7797085aac7","arr":[10,11,10]}
执行下面的更新
db.collection('xxx').where({
_id:"8f75309d62972ff30684c7797085aac7",
scores: 10
}).update({
data: {
"scores.$[]": 12
}
})
更新后的文档 arr:[12,12,12], 所有数组元素都修改了, 而不是只有值为(匹配)10的数组元素被修改。
(真心累, 搞个阉割版本给开发者用,直接花钱买mongodb版权吧, 要不就给云数据库团队加大投资力度, 做mongodb的超集)
验证了,确有此情况。
建议官方文档修改