如何刪除 MongoDB 中陣列欄位中的所有元素?


你可以為此使用 $set 運算子。語法如下:-

db.yourCollectionName.update({}, { $set : {"yourFieldName": [] }} , {multi:true} );

為了理解以上語法,讓我們建立一個包含文件的集合。建立包含文件的集合的查詢如下:-

> db.deleteAllElementsInArrayDemo.insertOne({"InstructorName":"Larry","InstructorTechnicalSubject":["Java","MongoDB"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8fb971d3c9d04998abf00e")
}
> db.deleteAllElementsInArrayDemo.insertOne({"InstructorName":"Mike","InstructorTechnicalSubject":["C","C++","Python"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8fb98ad3c9d04998abf00f")
}

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

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

以下是輸出:-

{
   "_id" : ObjectId("5c8fb971d3c9d04998abf00e"),
   "InstructorName" : "Larry",
   "InstructorTechnicalSubject" : [
      "Java",
      "MongoDB"
   ]
}
{
   "_id" : ObjectId("5c8fb98ad3c9d04998abf00f"),
   "InstructorName" : "Mike",
   "InstructorTechnicalSubject" : [
      "C",
      "C++",
      "Python"
   ]
}

以下是刪除陣列欄位中所有元素的查詢:-

> db.deleteAllElementsInArrayDemo.update({}, { $set : {"InstructorTechnicalSubject": [] }} , {multi:true} );
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

現在,讓我們使用 find() 來檢查集合中的所有文件。查詢如下:-

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

以下是輸出。我們已經刪除了“InstructorTechnicalSubject”陣列欄位的所有元素

{
   "_id" : ObjectId("5c8fb971d3c9d04998abf00e"),
   "InstructorName" : "Larry",
   "InstructorTechnicalSubject" : [ ]
}
{
   "_id" : ObjectId("5c8fb98ad3c9d04998abf00f"),
   "InstructorName" : "Mike",
   "InstructorTechnicalSubject" : [ ]
}

更新日期: 30-Jul-2019

1K+ 瀏覽次數

啟動您的職業生涯

完成課程,獲得認證

開始
Advertisement
© . All rights reserved.