你如何find使用MongoDB节点驱动程序的ID?

我正在寻找使用MongoDB Node驱动程序通过id查找的最佳方法。

我看到, _id字段是一个ObjectId ,所以使用该string的id将无法正常工作。 我看到你可以使用ObjectId ,如下所示:

 var ObjectId = require('mongodb').ObjectId; exports.show = function(req, res) { var db = req.app.get('db'); var id = new ObjectId(req.params.id); db.collection('posts').findOne({ _id: id }, function(err, post) { res.status(200).json(post); }); }; 

但是有没有最好的做法/更方便的方法? 我没有遇到过查看文档的人。 注意:Mongoose有一个findById方法,你可以使用idstring。

_id字段已经编入索引,findByID隐式search一个文档,因此findOne在其中传递选项{_id: id}就像您已经在做的那样。

据我所知,主要的devise考虑是使本地驱动程序API类似于mongo shell的体验,并保持其在各地(其他驱动程序?)一致。 为此,您可能希望保持API简单,但function强大,涵盖所有情况。 因此,为了推广,你有find()方法和“一个db.collection.findOne()方法作为find()的一个特例,它返回一个单独的文档。