2016-06-15 47 views
1

我一直在试图理解为什么这个删除查询不能工作几天,我只是看不到问题。
我已经尝试了许多不同的删除查询,如deleteOne,findOneAndDelete,deleteMany,但都没有工作。
我用node.js的Node.js删除查询“mongodb”

mongo.connect(serverAddress, (err, db) => { 
//(db connection is ok, server can find and create documents) 

    var doc = db.collection('myCollection'), 
    docToDelete = "575807172154b7a019ebf6db"; 
    //I can see the same document id on my database 

    doc.deleteOne({"_id":docToDelete}, (err, results) => { 
     console.log(`Request success : ${results.result.ok}, documents deleted : ${results.result.n}`); 
     //Request success : 1, documents deleted : 0, the document is still on my database 
    }); 
} 
//the doc var is the same I use to add/find documents (and it works). 

的“mongodb的”客户端当我使用相同的查询像MongoClient软件,它的工作原理。
我已经尝试了许多解决方案张贴在这个网站,并抱歉,如果错误太明显,但我完全失去了。
感谢您的帮助。

回答

1

问题是数据库中的_id类型是ObjectId,但在您的查询中它是String。你必须严格要求,否则查询将不匹配文档。

试试这个:

const mongodb = require('mongodb'); 
... 
doc.deleteOne({ _id : mongodb.ObjectId(docToDelete) }, (err, results) => { 
    ... 
}); 
+0

我完全错了,打消了我的答案,一为您 –

+0

非常感谢!我记得在mongo文档的某个地方看过这个ObjectId方法,但我没有建立连接...... – Razshal