我发现这个问题在c#和Perl中都有答案,但在本机接口中没有。我觉得这样会有用:

db.theColl。find({_id: ObjectId("4ecbe7f9e8c1c9092c000027")})

查询没有返回任何结果。我找到了4ecbe7f9e8c1c9092c000027通过做db. colll .find()和抓取一个ObjectId。这个集合中有几千个对象。

我在mongodb.org网站上读了所有能找到的页面都没找到。这样做很奇怪吗?这对我来说很正常。


当前回答

一点也不奇怪,人们总是这样做。确保集合名称是正确的(大小写重要),并且ObjectId是准确的。

文档在这里

> db.test.insert({x: 1})

> db.test.find()                                               // no criteria
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }      

> db.test.find({"_id" : ObjectId("4ecc05e55dd98a436ddcc47c")}) // explicit
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }

> db.test.find(ObjectId("4ecc05e55dd98a436ddcc47c"))           // shortcut
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }

其他回答

我觉得你最好这样写:

db.getCollection('Blog').find({"_id":ObjectId("58f6724e97990e9de4f17c23")})

您错过插入双引号。 准确查询是

db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )

甚至更简单,尤其是制表符补全:

db.test.find(ObjectId('4ecc05e55dd98a436ddcc47c'))

Edit:还与findOne命令一起工作以获得更漂亮的输出。

在MongoDB Stitch函数中,可以使用BSON完成,如下所示:

使用BSON实用程序包中的ObjectId helper来实现此目的,如下例所示:

var id = "5bb9e9f84186b222c8901149";  
BSON.ObjectId(id);

对于 Python 主义者:

import pymongo
from bson.objectid import ObjectId

...

for row in collectionName.find(
        {"_id" : ObjectId("63ae807ec4270c7a0b0f2c4f")}):
    print(row)