難以在 MongoDB 中實現 $addToSet 以獲取單個欄位的值?


$$addToSet 運算子會向陣列中新增值,除非該值已存在,在這種情況下,$$addToSet 對該陣列不執行任何操作。

讓我們建立一個包含文件的集合 −

> db.demo533.insertOne({"ProjectName":"Online Hospital Management"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b4cfaef4dcbee04fbbbfc")
}
> db.demo533.insertOne({"ProjectName":"Online Library Management"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b4d02ef4dcbee04fbbbfd")
}
> db.demo533.insertOne({"ProjectName":"Online Hospital Management"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b4d04ef4dcbee04fbbbfe")
}
> db.demo533.insertOne({"ProjectName":"Online Customer Tracker"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b4d0def4dcbee04fbbbff")
}

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

> db.demo533.find();

這將產生以下輸出 −

{ "_id" : ObjectId("5e8b4cfaef4dcbee04fbbbfc"), "ProjectName" : "Online Hospital Management" }
{ "_id" : ObjectId("5e8b4d02ef4dcbee04fbbbfd"), "ProjectName" : "Online Library Management" }
{ "_id" : ObjectId("5e8b4d04ef4dcbee04fbbbfe"), "ProjectName" : "Online Hospital Management" }
{ "_id" : ObjectId("5e8b4d0def4dcbee04fbbbff"), "ProjectName" : "Online Customer Tracker" }

以下是實現 $$addToSet 和獲取 ProjectName 欄位值所用的查詢 −

> db.demo533.aggregate(
...    [
...       {
...          $group:
...          {
...             _id:null,
...             SetOfProject: { $addToSet: "$ProjectName" }
...          }
...       }
...    ]
... )

這將產生以下輸出 −

{ "_id" : null, "SetOfProject" : [ "Online Customer Tracker", "Online Library Management", "Online Hospital Management" ] }

更新於: 2020-05-14

220 次瀏覽

開啟您的事業

獲取認證,完成課程

開始
廣告