MongoDB에서 필드별로 그룹화된 문서를 선택하려면 $project와 함께 $group을 사용합니다. 먼저 문서로 컬렉션을 만들어 보겠습니다. −
> db.demo540.insertOne({id:1,"Name":"Chris","CountryName":"US"});{ "acknowledged" : true, "insertedId" : ObjectId("5e8ca368ef4dcbee04fbbc0e") } > db.demo540.insertOne({id:1,"Name":"Chris","CountryName":"UK"});{ "acknowledged" : true, "insertedId" : ObjectId("5e8ca36bef4dcbee04fbbc0f") } > db.demo540.insertOne({id:1,"Name":"Chris","CountryName":"AUS"});{ "acknowledged" : true, "insertedId" : ObjectId("5e8ca370ef4dcbee04fbbc10") }
find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -
> db.demo540.find();
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" : ObjectId("5e8ca368ef4dcbee04fbbc0e"), "id" : 1, "Name" : "Chris", "CountryName" : "US" } { "_id" : ObjectId("5e8ca36bef4dcbee04fbbc0f"), "id" : 1, "Name" : "Chris", "CountryName" : "UK" } { "_id" : ObjectId("5e8ca370ef4dcbee04fbbc10"), "id" : 1, "Name" : "Chris", "CountryName" : "AUS" }
다음은 필드별로 그룹화된 문서를 선택하는 쿼리입니다 -
> var query= [ ... { ... "$group": { ... "_id": { ... "id": "$id", ... "Name": "$Name" ... }, ... "details": { ... "$push": { ... ... "CountryName": "$CountryName" ... ... } ... } ... } ... }, ... { ... "$project": { ... "_id": "$_id.id", ... "Name": "$_id.Name", ... "details": 1 ... } ... } ... ]; > db.demo540.aggregate(q).pretty();
이것은 다음과 같은 출력을 생성합니다 -
{ "details" : [ { "Name" : "Chris", "CountryName" : "US" }, { "Name" : "Chris", "CountryName" : "UK" }, { "Name" : "Chris", "CountryName" : "AUS" } ], "_id" : 1, "Name" : "Chris" }