Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

다른 컬렉션의 일치 필드에 대한 MongoDB 집계 JSON 배열 필드?

<시간/>

이를 위해 두 개의 컬렉션을 만들고 일부 문서를 추가합니다. 그런 다음 $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]" } ]}