Reputation: 966
I try to remove more than one document with mongoose.
I've try something like this.
const result = await Order.remove({id: {$in: req.body.id}});
But, it doesn't work!
The output of req.body.id
is array
.
To make sure that req.body.id
is an array. I try something like this:
req.body.id.constructor === Array
and the output is true
What is wrong?
UPDATE
Here is my req.body.id : [ '5ab0a359672f32ad94c5aa2d', '5ab0a3d25e7bef513cd882ff' ]
Upvotes: 1
Views: 4056
Reputation: 10148
For this you first need to convert them into MongoDB objectID
. Try this
const result = await Order.remove({id: {$in: (req.body.id).map(mongoose.Types.ObjectId)}});
Upvotes: 3
Reputation: 294
You have to convert your array element into ObjectId then you can delete multiple documents at a time.
Like,
Model.remove({_id: {$in: [ObjectId('5a9552ab72fa59ef5ac697f0'), ObjectId('5a9553c072fa59ef5ac6986e')]}});
If its match and removed then you will get a response like this { "nRemoved" : 2 }
If you are using mongoose, then you can do like this,
const mongoose = require('mongoose')
const ObjectId = mongoose.Types.ObjectId
and then you can convert it like ObjectId('YOUR_ID')
Upvotes: 1