MongoDB GroupBy 設定狀態


為此,你可以使用 MongoDB 中的 aggregate()。我們建立一個帶有文件的集合 -

> db.demo149.insertOne({"Status":40});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e350386fdf09dd6d08539c4")
}
> db.demo149.insertOne({"Status":40});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e350388fdf09dd6d08539c5")
}
> db.demo149.insertOne({"Status":50});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e35038afdf09dd6d08539c6")
}

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

> db.demo149.find();

這將產生以下輸出 -

{ "_id" : ObjectId("5e350386fdf09dd6d08539c4"), "Status" : 40 }
{ "_id" : ObjectId("5e350388fdf09dd6d08539c5"), "Status" : 40 }
{ "_id" : ObjectId("5e35038afdf09dd6d08539c6"), "Status" : 50 }

以下是 MongoDB 分組查詢 -

> db.demo149.aggregate([
...    {
...       "$group": {
...          "_id": null,
...          "done": {
...             "$push": {
...                "$cond": [
...                   { "$eq": [ "$Status", 40 ] },
...                   { "_id": "$_id", "Status": "$Status" },
...                   false
...                ]
...             }
...          },
...          "notdone": {
...             "$push": {
...                "$cond": [
...                   { "$eq": [ "$Status", 50 ] },
...                   { "_id": "$_id", "Status": "$Status" },
...                   false
...                ]
...             }
...          }
...       }
...    },
... {
...    "$project": {
...       "_id": 0,
...       "done": {
...          "$setDifference": [ "$done", [false] ]
...       },
...       "notdone": {
...          "$setDifference": [ "$notdone", [false] ]
...          }
...       }
...    }
... ]);

這將產生以下輸出 -

{
   "done" : [
      { "_id" : ObjectId("5e350386fdf09dd6d08539c4"), "Status" : 40 },
      { "_id" : ObjectId("5e350388fdf09dd6d08539c5"), "Status" : 40 } ], "notdone" : [
      { "_id" : ObjectId("5e35038afdf09dd6d08539c6"), "Status" : 50 }
   ]
}

更新時間:31-Mar-2020

92 次瀏覽

開啟你的 職業生涯

完成本課程獲得認證

開始
廣告