我发现这个问题在c#和Perl中都有答案,但在本机接口中没有。我觉得这样会有用:
db.theColl。find({_id: ObjectId("4ecbe7f9e8c1c9092c000027")})
查询没有返回任何结果。我找到了4ecbe7f9e8c1c9092c000027通过做db. colll .find()和抓取一个ObjectId。这个集合中有几千个对象。
我在mongodb.org网站上读了所有能找到的页面都没找到。这样做很奇怪吗?这对我来说很正常。
我发现这个问题在c#和Perl中都有答案,但在本机接口中没有。我觉得这样会有用:
db.theColl。find({_id: ObjectId("4ecbe7f9e8c1c9092c000027")})
查询没有返回任何结果。我找到了4ecbe7f9e8c1c9092c000027通过做db. colll .find()和抓取一个ObjectId。这个集合中有几千个对象。
我在mongodb.org网站上读了所有能找到的页面都没找到。这样做很奇怪吗?这对我来说很正常。
当前回答
对于 Python 主义者:
import pymongo
from bson.objectid import ObjectId
...
for row in collectionName.find(
{"_id" : ObjectId("63ae807ec4270c7a0b0f2c4f")}):
print(row)
其他回答
我觉得你最好这样写:
db.getCollection('Blog').find({"_id":ObjectId("58f6724e97990e9de4f17c23")})
甚至更简单,尤其是制表符补全:
db.test.find(ObjectId('4ecc05e55dd98a436ddcc47c'))
Edit:还与findOne命令一起工作以获得更漂亮的输出。
在MongoDB Stitch函数中,可以使用BSON完成,如下所示:
使用BSON实用程序包中的ObjectId helper来实现此目的,如下例所示:
var id = "5bb9e9f84186b222c8901149";
BSON.ObjectId(id);
只是做的事:
db.getCollection('test').find('4ecbe7f9e8c1c9092c000027');
如果你正在研究mongo shell,请参考这个:来自Tyler Brock的回答
如果你使用node.js使用mongodb,我写了答案
你不需要把id转换成一个ObjectId。只需使用:
db.collection.findById('4ecbe7f9e8c1c9092c000027');
这个收集方法会自动将id转换为ObjectId。
另一方面:
db.collection.findOne({"_id":'4ecbe7f9e8c1c9092c000027'})没有正常工作。您已经手动将id转换为ObjectId。
可以这样做:
let id = '58c85d1b7932a14c7a0a320d';
let o_id = new ObjectId(id); // id as a string is passed
db.collection.findOne({"_id":o_id});