MongoDB 查詢能刪除物件陣列中的空物件嗎?


可以使用 $pull 運算子來完成此操作。讓我們首先建立一個包含文件的集合。這裡,我們還添加了一個空物件 −

> db.removeEmptyObjectsDemo.insertOne(
   {
      "_id" :101,
      "LoginDate" :new ISODate(),
      "UserDetails" : [
         {
            "UserName" : "John"
         },
         {
         },
         {
            "UserName" : "Sam"
         }
      ]
   }
);
{ "acknowledged" : true, "insertedId" : 101 }

下面是使用 find() 方法顯示集合中所有文件的查詢 −

> db.removeEmptyObjectsDemo.find().pretty();

這將生成以下輸出 −

{
   "_id" : 101,
   "LoginDate" : ISODate("2019-05-25T04:46:29.505Z"),
   "UserDetails" : [
      {
         "UserName" : "John"
      },
      {
      },
      {
         "UserName" : "Sam"
      }
   ]
}

下面是用來刪除物件陣列中空物件的查詢 −

> db.removeEmptyObjectsDemo.update(
{},
{ "$pull": { "UserDetails": { "UserName": { "$exists": false } } } },
{ "multi": true }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

讓我們檢查上述集合中的文件 −

> db.removeEmptyObjectsDemo.find().pretty();

這將生成以下輸出。空物件已成功刪除 −

{
   "_id" : 101,
   "LoginDate" : ISODate("2019-05-25T04:46:29.505Z"),
   "UserDetails" : [
      {
         "UserName" : "John"
      },
      {
         "UserName" : "Sam"
      }
   ]
}

更新時間: 30-Jul-2019

751 瀏覽量

開啟 職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.