Подтвердить что ты не робот

Удалить запись по id?

Почему я не могу удалить запись с помощью _id?

код:

db.collection('posts', function(err, collection) {
   collection.remove({_id: '4d512b45cc9374271b00000f'});
});
4b9b3361

Ответ 1

Вам нужно передать значение _id как ObjectID, а не строку:

var mongodb = require('mongodb');

db.collection('posts', function(err, collection) {
   collection.deleteOne({_id: new mongodb.ObjectID('4d512b45cc9374271b00000f')});
});

Ответ 2

MongoDb теперь помечает метод удаления как устаревший. Он был заменен двумя отдельными способами: deleteOne и deleteMany.

Вот их соответствующее руководство по началу работы: https://docs.mongodb.org/getting-started/node/remove/

и вот быстрый пример:

var mongodb = require('mongodb');

db.collection('posts', function(err, collection) {
   collection.deleteOne({_id: new mongodb.ObjectID('4d512b45cc9374271b00000f')}, function(err, results) {
       if (err){
         console.log("failed");
         throw err;
       }
       console.log("success");
    });
});

Ответ 3

Я сталкиваюсь с той же проблемой с подключением mongodb, я хочу удалить сеанс, который сохранен в mydb.sessions, мое подключение вставляется и корректно обновляется, но не удаляет документ, но когда я перезагружаю свой сервер, он удаляется в первый раз, а не снова..

Выход из асинхронной функции (req, res) {

if (!req.sessionID || !req.session.driverId){
    res.send({status:400,detail:"Invalid Request"})
    return;
}

if (sessionStore!=null){
    sessionStore.deleteOne({_id:req.sessionID})
    res.send({status:200,detail:"Logged Out"})
}
else {res.send({status:400,detail:"Something went wrong"})}

}

//sessionStore здесь mydb.collection('сессий')