반응형
db.getCollection('intent_service_2').updateMany(
{"typeArray.executeInfo.serviceData.searchData.libName" : {$exists: true} },
{$set:{"typeArray.$[ap].executeInfo.$[ap2].serviceData.$[ap3].searchData.floor" : '1층'}},
{arrayFilters:[{"ap.reqType":"type1"}, {"ap2.serviceType":"md"}, {"ap3.searchData.libName":"a도서관"}]}
)
arrayFilters는
array 안의 필드나 중첩 array 안의 필드에 대해 접근하고자 할 때 유용하게 쓰일 수 있다.
일종의 식별자의 접근하기 위한
이정표이다.
사용방법은 array 식별자 앞이나 뒤에서 활용되면 연결 고리는 $[ position ] 와 arrayFilters:[{position : " 특정 값 "}] 매칭하여 array를 특정할 수 있도록한다.
position은 임의로 지정한 값이며 어떤 값도 사용 가능하다.
주의할 점은 arrayFilter 안의 경로는 $[]이 사용되는 경로를 기준으로 작성해야 한다.
위의 코드를 살펴보면
tyapeArray.$[ap].executeInfo가 사용되었는데
이는 typeArray.reqType이 있다는 전자하에
ap.reqType를 type1를 매칭하여 해당 인덱스로 접근 가능하도록
이정표를 지정한 것이다.
반응형
'IT > MongoDB' 카테고리의 다른 글
Studio 3T BSON 폴더 import 문제해결 (0) | 2024.10.23 |
---|---|
mongodb 중복 필드인 경우 find할 때 모두 조회 안되는 경 (0) | 2021.05.21 |
$rename (Update Operators/Field Update Operators) (0) | 2021.04.12 |
$eq 와 $ne (Operatros/Query and Projection Operators/Comparision Query Operators) (0) | 2021.04.12 |
$unset (Field Update Operators) (0) | 2021.04.12 |