如何在MongoDB中删除数组元素?

要在MongoDB中删除数组元素,可以使用$pull和$in运算符。语法如下:

db.yourCollectionName.update({},

   {$pull:{yourFirstArrayName:{$in:["yourValue"]},yourSecondArrayName:"yourValue"}},

   {multi:true}

);

为了理解上述语法,让我们创建一个带有文档的集合。用于创建包含文档的集合的查询如下:

>db.removeArrayElement.insertOne({"StudentName":"Larry","StudentCoreSubject":["MongoD

B","MySQL","SQL Server","Java"],"StudentFavouriteTeacher":["John","Marry","Carol"]});

{

   "acknowledged" : true,

   "insertedId" : ObjectId("5c6ec9c46fd07954a4890688")

}

在find()方法的帮助下显示集合中的所有文档。查询如下:

db.removeArrayElement.find().pretty();

以下是输出:

{

   "_id" : ObjectId("5c6ec9c46fd07954a4890688"),

   "StudentName" : "Larry",

   "StudentCoreSubject" : [

      "MongoDB",

      "MySQL",

      "SQL Server",

      "Java"

   ],

   "StudentFavouriteTeacher" : [

      "John",

      "Marry",

      "Carol"

   ]

}

这是删除MongoDB中的数组元素的查询:

> db.removeArrayElement.update({},

... {$pull:{StudentCoreSubject:{$in:["Java"]},StudentFavouriteTeacher:"Marry"}},

... {multi:true}

... );

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

我们从上方的第一个数组(“ StudentCoreSubject”)获得了“ Java”元素,从第二个数组(“ StudentFavouriteTeacher”)获得了第二个值“ Marry”元素。

让我们再次显示集合中的文档,以检查两个元素是否已删除。查询如下:

db.removeArrayElement.find().pretty();

以下是输出:

{

   "_id" : ObjectId("5c6ec9c46fd07954a4890688"),

   "StudentName" : "Larry",

   "StudentCoreSubject" : [

      "MongoDB",

      "MySQL",

      "SQL Server"

   ],

   "StudentFavouriteTeacher" : [

      "John",

      "Carol"

   ]

}

查看上面的示例输出,第一个数组中没有“ Java”元素(“ StudentCoreSubject”),第二个数组中没有“ Marry”元素(“ StudentFavouriteTeacher”)。因此,我们已成功将它们从集合中删除。

以上是 如何在MongoDB中删除数组元素? 的全部内容, 来源链接: utcz.com/z/341226.html

回到顶部