Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

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();

다음도 참조하세요.

돌아가기

Bulk.find

이 페이지의 내용