IT/MongoDB

arrayFilters

KeepGooing 2021. 4. 13. 13:03
반응형
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를 매칭하여 해당 인덱스로 접근 가능하도록

이정표를 지정한 것이다.

 

 

 

반응형