【问题标题】:Bulk Remove with Mongoose使用 Mongoose 批量删除
【发布时间】:2018-09-19 17:33:42
【问题描述】:

我尝试使用 mongoose 删除多个文档。

我尝试过类似的方法。

const result = await Order.remove({id: {$in: req.body.id}});

但是,它不起作用!

req.body.id 的输出是array

确保req.body.id 是一个数组。我尝试这样的事情:

req.body.id.constructor === Array

输出是true

怎么了?

更新

这是我的 req.body.id :[ '5ab0a359672f32ad94c5aa2d', '5ab0a3d25e7bef513cd882ff' ]

【问题讨论】:

标签: node.js mongodb mongoose


【解决方案1】:

为此,您首先需要将它们转换为 MongoDB objectID。试试这个

const result = await Order.remove({id: {$in: (req.body.id).map(mongoose.Types.ObjectId)}});

【讨论】:

    【解决方案2】:

    您必须将数组元素转换为 ObjectId,然后才能一次删除多个文档。

    喜欢,

    Model.remove({_id: {$in: [ObjectId('5a9552ab72fa59ef5ac697f0'), ObjectId('5a9553c072fa59ef5ac6986e')]}});
    

    如果它匹配并被删除,那么你会得到这样的响应 { "nRemoved" : 2 }

    如果你使用的是猫鼬,那么你可以这样做,

    const mongoose = require('mongoose')
    const ObjectId = mongoose.Types.ObjectId
    

    然后你可以像 ObjectId('YOUR_ID')

    那样转换它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 2010-10-18
      • 2018-05-24
      • 2013-05-06
      相关资源
      最近更新 更多