使用 Mongoose 批量删除
Posted
技术标签:
【中文标题】使用 Mongoose 批量删除【英文标题】:Bulk Remove with 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' ]
【问题讨论】:
你能发布那个数组吗?可能是你的数组不是 ObjectID 的.. 看***.com/questions/44467318/… Mongoose - remove multiple documents in one function call的可能重复 @Subburaj 检查我的更新 @AlexandruOlaru 不一样 【参考方案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')
那样转换它【讨论】:
以上是关于使用 Mongoose 批量删除的主要内容,如果未能解决你的问题,请参考以下文章
Pandas批量删除dataframe列名中的后缀实战:使用rstrip函数批量删除列名中的后缀(suffix)使用replace函数批量删除列名中的后缀(suffix)
Pandas批量删除dataframe列名中的前缀实战:使用lstrip函数批量删除列名中的前缀(prefix)使用replace函数批量删除列名中的前缀(prefix)