使用 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 批量删除的主要内容,如果未能解决你的问题,请参考以下文章

mongoose实现批量删除的api/方法

从聚合中批量删除文档

Mongoose - 删除使用承诺找到的所有文档

Pandas批量删除dataframe列名中的后缀实战:使用rstrip函数批量删除列名中的后缀(suffix)使用replace函数批量删除列名中的后缀(suffix)

Pandas批量删除dataframe列名中的前缀实战:使用lstrip函数批量删除列名中的前缀(prefix)使用replace函数批量删除列名中的前缀(prefix)

Java中怎样实现批量删除操作