你能帮我解决一下这段代码吗?当我运行此网址时,此代码不会从MongoDB中删除值: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);
});
});
答案 0 :(得分:4)
在MongoDB中,您使用_id
构造函数而不是ObjectId的字符串查询文档ID(ObjectId
)。因此查询需要是:{ '_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);
});
});
//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);
});
});
答案 1 :(得分:1)
是。谢谢你我想我错了。见下面的正确答案。
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);
});
});
答案 2 :(得分:0)
此响应表示您的查询正常执行"确定":1,但查找查询无法找到任何要删除它的文档。
所以在使用" findOneAndDelete
"之前仅使用" findOne
"并记录响应,以检查你是否有天气。