Mongoose - 在一个函数调用中删除多个文档

时间:2017-06-09 22:06:16

标签: node.js mongodb mongoose mongoose-schema database

在文档中有deleteMany()方法

Character.deleteMany({ name: /Stark/, age: { $gte: 18 } }, function (err) {});

我想删除多个具有一个公共属性且另一个属性不同的文档。像这样:

Site.deleteMany({ userUID: uid, id: [10, 2, 3, 5]}, function(err) {}

这个的正确语法是什么?

5 个答案:

答案 0 :(得分:32)

我相信你要找的是$in运营商:

Site.deleteMany({ userUID: uid, id: { $in: [10, 2, 3, 5]}}, function(err) {})

此处的文档:https://docs.mongodb.com/manual/reference/operator/query/in/

答案 1 :(得分:13)

您也可以使用。

Site.remove({ userUID: uid, id: { $in: [10, 2, 3, 5]}}, function(err, response) {});

答案 2 :(得分:0)

是的,$ in是完美的解决方案

Site.deleteMany({userUID:uid,id:{$ in:[10,2,3,5]}},function(err){})

答案 3 :(得分:0)

我必须将id更改为_id才能起作用:

Site.deleteMany({ _id: [1, 2, 3] });

如果未定义ID,而是使用默认ID,则会发生这种情况:

  

“如果没有将Mongoose传递给Schema构造函数,则默认情况下,Mongoose将为每个Schema分配一个_id字段。 mongoose docs

答案 4 :(得分:-1)

您正在寻找的是$in运算符:

Site.deleteMany({ userUID: uid, id: { $in: [10, 2, 3, 5]}}, (err,sites) => {

  console.log("deleted sites"+sites);

});