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

MongoDB에서 여러 문서를 병합하는 방법은 무엇입니까?

<시간/>

MongoDB에서 여러 문서를 병합하려면 집계()를 사용합니다. 문서로 컬렉션을 만들자 −

> db.demo436.insertOne(
...    {
...       "_id" : "101",
...       "Name": "Chris",
...       "details" : [
...          {
...             "CountryName" : "US",
...             "Age" : 21
...          }
...       ],
...       "Price" : 50
...    }
... );
{ "acknowledged" : true, "insertedId" : "101" }
> db.demo436.insertOne(
...    {
...       "_id" : "102",
...       "Name": "Chris",
...       "details" : [
...          {
...             "CountryName" : "UK",
...             "Age" : 22
...          }
...       ],
...       "Price" : 78
...    }
... );
{ "acknowledged" : true, "insertedId" : "102" }
> db.demo436.insertOne(
...    {
...       "_id" : "103",
...       "Name": "Chris",
...       "details" : [
...          {
...             "CountryName" : "US",
...             "Age" : 21
...          }
...       ],
..      . "Price" : 50
...    }
... );
{ "acknowledged" : true, "insertedId" : "103" }

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

> db.demo436.find();

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

{ "_id" : "101", "Name" : "Chris", "details" : [ { "CountryName" : "US", "Age" : 21 } ], "Price" : 50 }
{ "_id" : "102", "Name" : "Chris", "details" : [ { "CountryName" : "UK", "Age" : 22 } ], "Price" : 78 }
{ "_id" : "103", "Name" : "Chris", "details" : [ { "CountryName" : "US", "Age" : 21 } ], "Price" : 50 }

다음은 MongoDB에서 여러 문서를 병합하는 쿼리입니다 -

> db.demo436.aggregate([
...    {$sort: {_id: 1, Name: 1}},
...    {$unwind: '$details'},
...    {$group: {_id: '$Name', details: {$push: '$details'},
...    Price: {$sum: '$Price'},
...    id: {$last: {$concat: ["$_id", "_", "AppendedValue" ]}},
...    Name: {$last: '$Name'}}},
...    {$addFields: {Id: 'NewIdAppped', _id: '$id'}},
...    {$project: {"id": 0 }}])

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

{ "_id" : "103_AppendedValue", "details" : [ { "CountryName" : "US", "Age" : 21 }, { "CountryName" : "UK", "Age" : 22 }, { "CountryName" : "US", "Age" : 21 } ], "Price" : 178, "Name" : "Chris", "Id" : "NewIdAppped" }