Search code examples
node.jsmongodbexpressmongooseweb-development-server

$pull is not working for array in mongoose (MongoDB)


In mongoDB (Through mongoose), I am trying to remove an element in array of a collection and using $pull operator for that, but it is not working.

Rooms collection in mongoDB

{
"_id":"sampleObjectId",
"users": ["[email protected]", "[email protected]"]
}

Backend code to remove a user (mongoose using Node.js)

Rooms.update(
              { _id: "sampleRoomId" },
              {
                $pull: {
                    users: "[email protected]" }
                },
              }
            )

Noting happens to collection on running this code, no change happens. code runs with no errors and in output it says "nModified":0 . I have no idea how to remove a user from collection.


Solution

  • //actual code output from the mongo shell. This is working as expected. check if you given //correct value in object_id query parameter.
    
    > db.rooms.find();
    { "_id" : "sampleObjectId", "users" : [ "[email protected]", "[email protected]" ] }
    > db.rooms.update(
    ... {_id: "sampleObjectId"},
    ... {$pull:{users:"[email protected]"}}
    ... );
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.rooms.find();
    { "_id" : "sampleObjectId", "users" : [ "[email protected]" ] }
    > db.version();
    4.2.6
    >