$[<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:grades80std5$[<identifier>]
操作后,集合具有以下文档:
考虑alumni包含以下文档的集合:
要修改degrees数组中所有没有的元素,请
对查询运算符使用位置运算:"level": "Bachelor"[<identifier>]$ne
操作后,集合具有以下文档: