我尝试用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' ]
答案 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)}});