특정 중첩 속성에 대한 프로젝션의 경우 MongoDB에서 집계()를 사용합니다. 먼저 문서로 컬렉션을 생성해 보겠습니다. −
> db.demo379.insertOne(... {... "details1" :{... "details2" :{... "details3" :{... "10" :"John",. .. "50" :"크리스",... "40" :"데이비드",... "30":"마이크"... }... }... }... }... );{ "승인됨" :true, "insertedId" :ObjectId("5e5a94f82ae06a1609a00b10")}
find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -
> db.demo379.find().pretty();
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" :ObjectId("5e5a94f82ae06a1609a00b10"), "details1" :{ "details2" :{ "details3" :{ "10" :"John", "30" :"마이크", "40" :"데이비드", "50" :"크리스" } } }}
다음은 특정 중첩 속성에 대한 투영 쿼리입니다. -
> db.demo379.aggregate([... { "$addFields":{... "details1.details2.details3":{... "$arrayToObject":{... "$filter":{... "입력":{ "$objectToArray":"$details1.details2.details3" },... "as":"out",... "cond":{... "$and" :[... { "$gte":["$$out.k", "35"] },... { "$lte":["$$out.k", "60"] }, ... ]... }... }... }... }... } }... ])
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" :ObjectId("5e5a94f82ae06a1609a00b10"), "details1" :{ "details2" :{ "details3" :{ "40" :"데이비드", "50" :"크리스" } } } }사전>