Bulk.find.arrayFilters()
설명
Bulk.find.arrayFilters(<array of filter documents>)
버전 3.6에 새로 추가되었습니다.
배열 필드에서 업데이트 작업을 위해 어떤 배열 요소를 수정할지 결정합니다.
Bulk.find(<query>).arrayFilters([ <filter1>, ... ]).updateOne(<update>); Bulk.find(<query>).arrayFilters([ <filter1>, ... ]).update(<update>); 업데이트 문서 에서
$[<identifier>]
필터링된 위치 연산자 를 사용하여 식별자를 정의한 다음 배열 필터하다 문서에서 참조합니다. 식별자가 업데이트 문서 에 포함되어 있지 않은 경우 식별자에 대한 배열 필터하다 문서 를 가질 수 없습니다.<identifier>
는 소문자로 시작해야 하며 영숫자만 포함할 수 있습니다.업데이트 문서에 동일한 식별자를 여러 번 포함할 수 있지만, 업데이트 문서의 각 고유 식별자(
$[identifier]
)에 대해 해당하는 배열 필터 문서를 정확히 하나씩 지정해야 합니다. 즉, 동일한 식별자에 대해 여러 개의 배열 필터 문서를 지정할 수 없습니다. 예를 들어, 업데이트 문에 식별자x
가 포함된 경우(여러 번),x
에 대한 별도의 필터 문서 2개가 포함된arrayFilters
에 대해 다음을 지정할 수 없습니다.// INVALID [ { "x.a": { $gt: 85 } }, { "x.b": { $gt: 80 } } ] 그러나 다음 예시와 같이 단일 필터 문서에서 동일한 식별자에 복합 조건을 지정할 수 있습니다.
// 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 } } ] Bulk.find()
메서드에 추가하여updateOne()
및update()
작업에 대한 배열 필터를 지정합니다.
예시
var bulk = db.coll.initializeUnorderedBulkOp(); bulk.find({}).arrayFilters( [ { "elem.grade": { $gt: 85 } } ] ).updateOne( { $set: { "grades.$[elem].mean" : 70 } } ); bulk.execute();