이를 위해 두 개의 컬렉션을 만들고 일부 문서를 추가합니다. 그런 다음 $lookup을 사용하여 일치시킵니다. 문서로 컬렉션을 만들자 −
> db.demo101.insertOne(... { "_id" :"1", "자세히" :[ { "PId" :"200" }, { "PId" :"201" }, { "PId" " :"201" } ] }... ){ "승인됨" :true, "insertedId" :"1" }
find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -
> db.demo101.find();
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" :"1", "자세히" :[ { "PId" :"200" }, { "PId" :"201" }, { "PId" :"201" } ] }사전>다음은 일부 문서로 두 번째 컬렉션을 생성하는 쿼리입니다 -
> db.demo102.insertOne(... { "_id" :"201", "CustEmailId" :"[email protected]" }... );{ "승인됨" :true, "insertedId" :"201" }find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -
> db.demo102.find();이것은 다음과 같은 출력을 생성합니다 -
{ "_id":"200", "CustEmailId":"[email protected]" }{ "_id":"201", "CustEmailId":"[email protected]" }다음은 다른 컬렉션의 일치하는 필드에 대한 JSON 배열 필드를 집계하는 쿼리입니다 -
> db.demo101.aggregate(... [... {$unwind:"$Details"},... {$lookup:{from:"demo102", "localField":"Details.PId" , "foreignField":"_id", as :"out"}},... {$project:{"_id":1, "Details.PId":{$arrayElemAt:["$out.CustEmailId",0 ]}}},... {$group:{_id:"$_id", 세부정보:{$push:"$Details"}}}... ]... ).pretty()이것은 다음과 같은 출력을 생성합니다 -
{ "_id" :"1", "Details" :[ { "PId" :"[email protected]" }, { "PId" :"[email protected]" }, { "PId" :"[email protected]" } ]}