$ pull не работает для массива в mongoose (MongoDB)

#node.js #mongodb #express #mongoose #web-development-server

#node.js #mongodb #экспресс #mongoose #веб-разработка-сервер

Вопрос:

В MongoDB (через mongoose) я пытаюсь удалить элемент из массива коллекции и использую для этого оператор $pull, но он не работает.

Сбор номеров в MongoDB

 {
"_id":"sampleObjectId",
"users": ["email1@example.com", "email2@example.com"]
}
  

Внутренний код для удаления пользователя (mongoose с помощью Node.js )

 Rooms.update(
              { _id: "sampleRoomId" },
              {
                $pull: {
                    users: "email1@exmple.com" }
                },
              }
            )
  

При выполнении этого кода происходит изменение коллекции, никаких изменений не происходит. код выполняется без ошибок, и на выходе он говорит "nModified":0 .
Я понятия не имею, как удалить пользователя из коллекции.

Комментарии:

1. mongoplayground.net/p/f58HFvHkJcC это работает так, как вы и ожидали

2. В вашем документе обновления есть опечатка, email1@exmple.com вместо email1@example.com

3. @varman пожалуйста, ознакомьтесь с этой ссылкой на код, она не работает

4. Спасибо, что указали на это, но. Я только что привел пример моего реального кода (приведенный код не является реальным), опечатка не является реальной проблемой @MontgomeryWatts. Пожалуйста, посмотрите на эту ссылку

5. _id это идентификатор объекта, но вы передаете значение в виде строки. Приведите его к объектному идентификатору следующим образом

Ответ №1:

 //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" : [ "email1@example.com", "email2@example.com" ] }
> db.rooms.update(
... {_id: "sampleObjectId"},
... {$pull:{users:"email1@example.com"}}
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.rooms.find();
{ "_id" : "sampleObjectId", "users" : [ "email2@example.com" ] }
> db.version();
4.2.6
>