使用聚合管道在 MongoDB 中提取記錄


MongoDB 聚合管道具有階段。每個階段在文件透過管道時都會轉換這些文件。

我們首先使用文件建立一個集合 -

> db.demo218.insertOne({"Name":"Chris","Branch":"CS",Marks:[65,78,36,90]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e5f4903d395bdc2134712")
}
> db.demo218.insertOne({"Name":"David","Branch":"ME",Marks:[56,45,42,51]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e5f6203d395bdc2134713")
}
> db.demo218.insertOne({"Name":"Chris","Branch":"CS",Marks:[78,65,89]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e5f6c03d395bdc2134714")
}

使用 find() 方法從集合顯示所有文件 -

> db.demo218.find();

這將產生以下輸出 -

{ "_id" : ObjectId("5e3e5f4903d395bdc2134712"), "Name" : "Chris", "Branch" : "CS", "Marks" : [ 65, 78, 36, 90 ] }
{ "_id" : ObjectId("5e3e5f6203d395bdc2134713"), "Name" : "David", "Branch" : "ME", "Marks" : [ 56, 45, 42, 51 ] }
{ "_id" : ObjectId("5e3e5f6c03d395bdc2134714"), "Name" : "Chris", "Branch" : "CS", "Marks" : [ 78, 65, 89 ] }

以下是聚合管道的查詢 -

> db.demo218.aggregate([
...   { "$unwind": "$Marks" },
...   { "$match":
...      {
...         "Branch": "CS",
...         "Marks": { "$gt": 88 }
...      }
...   },
...   { "$group":
...      {
...         "_id": "$_id",
...         "Branch": { "$first": "$Branch" },
...         "Marks": { "$first": "$Marks" }
...      }
...   }
...])

這將產生以下輸出 -

{ "_id" : ObjectId("5e3e5f6c03d395bdc2134714"), "Branch" : "CS", "Marks" : 89 }
{ "_id" : ObjectId("5e3e5f4903d395bdc2134712"), "Branch" : "CS", "Marks" : 90 }

更新於: 30-03-2020

151 次瀏覽

開啟你的 職業生涯

完成課程後獲得認證

開始
廣告