Computer >> Máy Tính >  >> Lập trình >> MongoDB

MongoDB tổng hợp để chuyển đổi nhiều tài liệu thành một tài liệu duy nhất bằng một mảng?

Đối với tổng hợp trong MongoDB, hãy sử dụng tổng hợp (). Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.demo248.insertOne({"id":101,"Name":"Chris","Age":21,"CountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e46b6651627c0c63e7dba6d")
}
> db.demo248.insertOne({"id":101,"Name":"Bob","Age":22,"CountryName":"UK"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e46b6741627c0c63e7dba6e")
}
> db.demo248.insertOne({"id":102,"Name":"Mike","Age":20,"CountryName":"AUS"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e46b6811627c0c63e7dba6f")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -

> db.demo248.find();

Điều này sẽ tạo ra kết quả sau -

{ "_id" : ObjectId("5e46b6651627c0c63e7dba6d"), "id" : 101, "Name" : "Chris", "Age" : 21, "CountryName" : "US" }
{ "_id" : ObjectId("5e46b6741627c0c63e7dba6e"), "id" : 101, "Name" : "Bob", "Age" : 22, "CountryName" : "UK" }
{ "_id" : ObjectId("5e46b6811627c0c63e7dba6f"), "id" : 102, "Name" : "Mike", "Age" : 20, "CountryName" : "AUS" }

Sau đây là truy vấn để chuyển đổi nhiều tài liệu thành một tài liệu duy nhất bằng một mảng -

> db.demo248.aggregate([
...   {
...      $group : {
...         _id : "$id",
...         details : {
...            $push : {
...               id:"$id",
...               Name:"$Name",
...               Age:"$Age",
...               CountryName:"$CountryName"
...            }
...         }
...      }
...   }
...])

Điều này sẽ tạo ra kết quả sau -

{ "_id" : 102, "details" : [ { "id" : 102, "Name" : "Mike", "Age" : 20, "CountryName" : "AUS" } ] }
{ "_id" : 101, "details" : [ { "id" : 101, "Name" : "Chris", "Age" : 21, "CountryName" : "US" }, { "id" : 101, "Name" : "Bob", "Age" : 22, "CountryName" : "UK" } ] }