Ответ 1
Вам нужно передать значение _id
как ObjectID, а не строку:
var mongodb = require('mongodb');
db.collection('posts', function(err, collection) {
collection.deleteOne({_id: new mongodb.ObjectID('4d512b45cc9374271b00000f')});
});
Почему я не могу удалить запись с помощью _id?
код:
db.collection('posts', function(err, collection) {
collection.remove({_id: '4d512b45cc9374271b00000f'});
});
Вам нужно передать значение _id
как ObjectID, а не строку:
var mongodb = require('mongodb');
db.collection('posts', function(err, collection) {
collection.deleteOne({_id: new mongodb.ObjectID('4d512b45cc9374271b00000f')});
});
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");
});
});
Я сталкиваюсь с той же проблемой с подключением 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('сессий')