如何在 MongoDB 中合并多个文档?


若要在 MongoDB 中合并多个文档,请使用 aggregate()。我们用文档创建一个集合 −

> 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" }

更新于: 2020 年 04 月 03 日

1K+ 浏览量

开启您的 职业 生涯

完成课程即可获得认证

开始
广告