설명
Bulk.find.arrayFilters(<array of filter documents>)배열 필드에서 업데이트 작업을 위해 어떤 배열 요소를 수정할지 결정합니다.
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()작업에 대한 배열 필터를 지정합니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
참고
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
예시
var bulk = db.coll.initializeUnorderedBulkOp(); bulk.find({}).arrayFilters( [ { "elem.grade": { $gt: 85 } } ] ).updateOne( { $set: { "grades.$[elem].mean" : 70 } } ); bulk.execute();