Delete object from array by given _id in in Mongoose
crud, mongodb, mongoid, mongoose, node.js
Solution
Quote from SERVER-2016:
The argument to $pull is already applied to each element of the target array, so using $elemMatch is redundant in the update context.
So just execute your query without `$elemMatch`:
User
.findByIdAndUpdate(req.user._id, {
$pull: {events: {
_id: _eventId //_eventId is string representation of event ID
}}
}, function(err) {
// ...
});
Problem
In Mongoose model User given document look like this: ``` > db.users.find().pretty() { /* ... */ "events" : [ { "_id" : ObjectId("537bb2faf87f9a552c3219ea"), "message" : "Foo" }, { "_id" : ObjectId("537bb436c3b9a1aa2db71b7c"), "message" : "Bar" }, { "_id" : ObjectId("537bb4ab2cc503e52e24d145"), "message" : "Biz" }, { "_id" : ObjectId("537bb4d02cc503e52e24d146"), "message" : "Pop" } ] ``` } Some function takes event _id as parameter and must delete object responding to this _id from MongoDB. I tried: ``` User .findByIdAndUpdate(req.user._id, { $pull: {events: { $elemMatch: {_id: _eventId} //_eventId is string representation of event ID }} }, function(err) { // ... }); ``` It is not working. What am I doing wrong?