nodejs mongodb不删除基于id

你能帮我用这个代码。 这段代码并不是从MongoDB中删除这个值,而是运行这个url: http:// localhost:3000 / delete / 57c6713455a6b92e105c5250 。

我得到这个回应: {"lastErrorObject":{"n":0},"value":null,"ok":1} ,但不能删除。

 app.get('/delete/:id', (req, res) => { var uid = req.params.id; db.collection('quotes').findOneAndDelete({'_id': uid}, (err, result) => { if (err) return res.send(500, err); res.send(result); }); }); 

在MongoDB中,通过使用ObjectId构造函数而不是ObjectId的string来查询文档ID( _id )。 因此查询需要是: { '_id': ObjectId(uid) }

 var mongoClient = require('mongodb').MongoClient; //Include ObjectId var ObjectId = require('mongodb').ObjectID; mongoClient.connect("Your connection string", function(err, db) { var query = { _id: ObjectId("id_string") // Important to notice }; var collection = db.collection('your collection'); collection.find(query, function(err, docs) { console.log(err, docs); }); }); 

build议

 //Include ObjectId var ObjectId = require('mongodb').ObjectID; app.get('/delete/:id', (req, res) => { var uid = req.params.id; //Add object id to query object db.collection('quotes').findOneAndDelete({'_id': ObjectId(uid)}, (err, result) => { if (err) return res.send(500, err); res.send(result); }); }); 

这个响应意味着你的查询正确执行“OK”:1,但find查询无法find任何文档来删除它。

因此,在使用“ findOneAndDelete ”之前,只能使用“ findOne ”并logging响应,以检查是否logging了该文档。

是。 谢谢,我想我在哪里做错了。 看下面的正确答案。

 var ObjectId = require('mongodb').ObjectID; app.get('/delete/:id', (req, res) => { var uid = req.params.id; db.collection('quotes').findOneAndDelete({'_id': ObjectId(uid) }, (err, result) => { if (err) return res.send(500, err); res.send(result); }); });