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

MongoDB의 다른 필드로 값 그룹을 찾으시겠습니까?

<시간/>

다른 필드로 그룹화하려면 $project와 함께 $group을 사용합니다. 먼저 문서로 컬렉션을 만들어 보겠습니다. −

> db.demo374.insertOne(
...    {
...
...       "Name" : "Chris",
...       "HobbyDetails" : [
...          "Reading Book",
...          "Playing Football"
...       ],
...       "CountryName" : "US"
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5a04402ae06a1609a00b04")
}
> db.demo374.insertOne(
...    {
...
...       "Name" : "Chris",
...       "HobbyDetails" : [
...          "Browsing Internet",
...          "Playing Football"
...       ],
...       "CountryName" : "US"
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5a04402ae06a1609a00b05")
}

find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -

> db.demo374.find();

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" : ObjectId("5e5a04402ae06a1609a00b04"), "Name" : "Chris", "HobbyDetails" : [ "Reading Book", "Playing Football" ], "CountryName" : "US" }
{ "_id" : ObjectId("5e5a04402ae06a1609a00b05"), "Name" : "Chris", "HobbyDetails" : [ "Browsing Internet", "Playing Football" ], "CountryName" : "US" }

다음은 MongoDB에서 다른 필드로 값 그룹을 찾는 쿼리입니다 -

> db.demo374.aggregate([
...    {$match : { "CountryName" : "US"}},
...    {$group : {"_id" : "$Name", "HobbyDetails" : {$addToSet : "$HobbyDetails"}}},
...    {$project : {"_id" : 0, "Name" : "$_id", "HobbyDetails" : {$reduce : {input : "$HobbyDetails", initialValue : [], in: { $concatArrays : ["$$value", "$$this"] }}}}}
... ]).pretty()

이것은 다음과 같은 출력을 생성합니다 -

{
   "Name" : "Chris",
   "HobbyDetails" : [
      "Browsing Internet",
      "Playing Football",
      "Reading Book",
      "Playing Football"
   ]
}