【问题标题】:Mongoose - remove multiple documents in one function callMongoose - 在一个函数调用中删除多个文档
【发布时间】:2017-11-12 00:48:50
【问题描述】:

在文档中有 deleteMany() 方法

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

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

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

什么是正确的语法?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 你可以省略$in,只需要id: [10, 2, 3, 5]
    【解决方案2】:

    你也可以使用。

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

    【讨论】:

    • 它在 Mongoose 5.x 中已被弃用,应该在那里使用 deleteMany
    【解决方案3】:

    是的,$in 是一个完美的解决方案:

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

    【讨论】:

      【解决方案4】:

      我必须将 id 更改为 _id 才能正常工作:

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

      如果没有定义 id 并使用默认值,则会发生这种情况:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-28
        • 2023-01-09
        • 1970-01-01
        • 1970-01-01
        • 2012-12-24
        • 2020-01-31
        相关资源
        最近更新 更多