在 MongoDB 中用陣列檢索按組排列的結果?


要使用陣列檢索按組排列的結果,請使用 aggregate()。我們還將使用 $addToSet 運算子。它向陣列中新增一個值,除非該值已經存在,在這種情況下,$addToSet 不會對該陣列做任何處理。

我們建立一個帶有文件的集合 −

> db.demo498.insertOne({id:1,Name:["Chris"]});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e86192b987b6e0e9d18f553")
}
> db.demo498.insertOne({id:2,Name:["David"]});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e86192d987b6e0e9d18f554")
}
> db.demo498.insertOne({id:3,Name:["Chris"]});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e861931987b6e0e9d18f555")
}
> db.demo498.insertOne({id:4,Name:["Bob"]});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e861942987b6e0e9d18f556")
}
> db.demo498.insertOne({id:5,Name:["David"]});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e861947987b6e0e9d18f557")
}

使用 find() 方法在集合中顯示所有文件 −

> db.demo498.find();

這將產生以下輸出 −

{ "_id" : ObjectId("5e86192b987b6e0e9d18f553"), "id" : 1, "Name" : [ "Chris" ] }
{ "_id" : ObjectId("5e86192d987b6e0e9d18f554"), "id" : 2, "Name" : [ "David" ] }
{ "_id" : ObjectId("5e861931987b6e0e9d18f555"), "id" : 3, "Name" : [ "Chris" ] }
{ "_id" : ObjectId("5e861942987b6e0e9d18f556"), "id" : 4, "Name" : [ "Bob" ] }
{ "_id" : ObjectId("5e861947987b6e0e9d18f557"), "id" : 5, "Name" : [ "David" ] }

以下是使用 MongoDB 檢索按組排列的結果的查詢 −

> db.demo498.aggregate([{
...    $unwind : "$Name"
... }, {
...       $group : {
...          _id : $quot;$Name",
...          Id : {
...             $addToSet : "$id"
...          }
...       }
...    }
... ])

這將產生以下輸出 −

{ "_id" : "David", "Id" : [ 5, 2 ] }
{ "_id" : "Bob", "Id" : [ 4 ] }
{ "_id" : "Chris", "Id" : [ 3, 1 ] }

更新時間: 13-05-2020

1K+ 瀏覽

開啟您的 職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.