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); }); });