如何在 MongoDB 中删除数组字段中的所有元素?

mongodbdatabasebig data analytics更新于 2026/1/19 5:37:17

您可以使用 $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" : [ ]
}

相关文章