批量删除与猫鼬

时间:2018-04-10 07:30:03

标签: node.js mongodb mongoose

我尝试用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' ]

2 个答案:

答案 0 :(得分:2)

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

像,

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

如果匹配并删除,那么您将收到类似 {“nRemoved”:2}

的回复

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

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

然后您可以将其转换为 ObjectId('YOUR_ID')

答案 1 :(得分:2)

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

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