如何從 MongoDB 中的陣列中移除物件?


你可以使用 $pull 運算子從 MongoDB 中的陣列中移除物件。為了理解這個概念,讓我們用此文件建立一個集合。建立一個包含以下文件的集合的查詢如下所示 −

> db.removeObjectFromArrayDemo.insertOne(
... {
   ...
   ... "StudentName": "John",
   ... "StudentAcademicProjectDetails":
   ... [{
         ... "StudentProjectId": 101,
         ... "StudentProjectName": "Pig Dice Game"
      ... },
      ... {
         ... "StudentProjectId": 110,
         ... "StudentProjectName": "Library Management System"
      ... },
      ...
      ... {
         ... "StudentProjectId": 120,
         ... "StudentProjectName": "Phonebook Management System"
      ... }
   ... ]
   ... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8ad13d6cea1f28b7aa0817")
}

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

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

輸出如下所示 −

{
   "_id" : ObjectId("5c8ad13d6cea1f28b7aa0817"),
   "StudentName" : "John",
   "StudentAcademicProjectDetails" : [
      {
         "StudentProjectId" : 101,
         "StudentProjectName" : "Pig Dice Game"
      },
      {
         "StudentProjectId" : 110,
         "StudentProjectName" : "Library Management System"
      },
      {
         "StudentProjectId" : 120,
         "StudentProjectName" : "Phonebook Management System"
      }
   ]
}

以下是從 MongoDB 中的陣列中移除物件的查詢 −

> db.removeObjectFromArrayDemo.update(
   ... {'_id': ObjectId("5c8ad13d6cea1f28b7aa0817")},
   ... { $pull: { "StudentAcademicProjectDetails" : { StudentProjectId: 101 } } },
   ... false,
   ... true
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

讓我們檢查集合中的文件以檢查物件是否已從陣列中移除。查詢如下所示 −

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

輸出如下所示 −

{
   "_id" : ObjectId("5c8ad13d6cea1f28b7aa0817"),
   "StudentName" : "John",
   "StudentAcademicProjectDetails" : [
      {
         "StudentProjectId" : 110,
         "StudentProjectName" : "Library Management System"
      },
      {
         "StudentProjectId" : 120,
         "StudentProjectName" : "Phonebook Management System"
      }
   ]
}

檢視上述示例輸出,ID 為 101 的 “StudentProjectId” 欄位已移除。

更新於:30-Jul-2019

2 千次瀏覽

開啟你的職業生涯 生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.