Bulk.find.arrayFilters()
On this page本页内容
Description描述
Bulk.find.arrayFilters(<array of filter documents>)
-
Determines which array elements to modify for an update operation on an array field:确定要为数组字段的更新操作修改哪些数组元素:Bulk.find(<query>).arrayFilters([ <filter1>, ... ]).updateOne(<update>);
Bulk.find(<query>).arrayFilters([ <filter1>, ... ]).update(<update>);In the update document, use the在更新文档中,使用$[<identifier>]
filtered positional operator to define an identifier, which you then reference in the array filter documents.$[<identifier>]
筛选的位置运算符来定义标识符,然后在数组筛选文档中引用该标识符。You cannot have an array filter document for an identifier if the identifier is not included in the update document.如果标识符未包含在更新文档中,则不能为该标识符设置数组筛选器文档。NoteThe<identifier>
must begin with a lowercase letter and contain only alphanumeric characters.<identifier>
必须以小写字母开头,并且仅包含字母数字字符。You can include the same identifier multiple times in the update document; however, for each distinct identifier (您可以在更新文档中多次包含相同的标识符;但是,对于更新文档中的每个不同标识符($[identifier]
) in the update document, you must specify exactly one corresponding array filter document.$[identifier]
),必须指定一个对应的数组筛选器文档。That is, you cannot specify multiple array filter documents for the same identifier.也就是说,不能为同一标识符指定多个数组筛选器文档。For example, if the update statement includes the identifier例如,如果update语句包含标识符x
(possibly multiple times), you cannot specify the following forarrayFilters
that includes 2 separate filter documents forx
:x
(可能多次),则不能为arrayFilters
指定以下内容,因为arrayFilters
包含两个单独的x
筛选文档:// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]However, you can specify compound conditions on the same identifier in a single filter document, such as in the following examples:但是,您可以在单个筛选器文档中对同一标识符指定复合条件,例如以下示例:// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]Append to附加到Bulk.find()
method to specify the array filters for theupdateOne()
andupdate()
operations.Bulk.find()
方法,为updateOne()
和update()
操作指定数组筛选器。
Example实例
var bulk = db.coll.initializeUnorderedBulkOp();
bulk.find({}).arrayFilters( [ { "elem.grade": { $gt: 85 } } ] ).updateOne( { $set: { "grades.$[elem].mean" : 70 } } );
bulk.execute();