將 MongoDB 聚合成一個單獨的文件,其中帶有一個數組?


對於 MongoDB 中的聚合,請使用 aggregate()。讓我們建立一個包含文件的集合 −

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

在 find() 方法的幫助下,顯示集合中的所有文件 −

> db.demo248.find();

這將產生以下輸出 −

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

以下是將多個文件轉換為具有陣列的單個文件的查詢 −

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

這將產生以下輸出 −

{ "_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" } ] }

更新於:30-Mar-2020

861 瀏覽次數

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告