$[<identifier>]
¶3.6版的新功能。
过滤后的位置运算符$[<identifier>]
标识与arrayFilters条件匹配的数组元素以进行更新操作,例如db.collection.update()
和
db.collection.findAndModify()
。
与该arrayFilters
选项结合使用,
$[<identifier>]
运算符具有以下形式:
与该arrayFilters
选项结合使用,以更新一个或多个与查询条件匹配的文档中所有与arrayFilters条件匹配的元素。例如:
注意
在<identifier>
必须以小写字母开头,并且只包含字母数字字符。
有关示例,请参见更新与arrayFilters匹配的所有数组元素。
arrayFilters
¶考虑students
包含以下文档的集合:
要更新是大于或等于所有元素100
中
grades
阵列中,使用过滤的位置操作者
$[<identifier>]
与arrayFilters:
位置$[<identifier>]
运算符充当数组字段中与arrayFilters中指定的条件匹配的所有元素的占位符。
操作后,students
集合包含以下文档:
arrayFilters
数组中所有匹配的文档¶该$[<identifier>]
操作有利于更新包含嵌入文档数组。要访问嵌入文档中的字段,使用点符号上$[<identifier>]
。
考虑students2
包含以下文档的集合:
要修改等级大于或等于mean
的grades
数组中所有元素的字段
值85
,请使用位置$[<identifier>]
运算符和
arrayFilters:
操作后,集合具有以下文档:
考虑students2
包含以下文档的集合:
要修改数组中所有等级大于等于且大于等于的
std
元素的字段
值,请使用位置运算符和arrayFilters:grades
80
std
5
$[<identifier>]
操作后,集合具有以下文档:
考虑alumni
包含以下文档的集合:
要修改degrees
数组中所有没有的元素,请
对查询运算符使用位置运算:"level": "Bachelor"
[<identifier>]
$ne
操作后,集合具有以下文档: