我发现这个问题在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.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )

对于 Python 主义者:

import pymongo
from bson.objectid import ObjectId

...

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

如果你使用Node.js:

var ObjectId = require('mongodb').ObjectId; 
var id = req.params.gonderi_id;       
var o_id = new ObjectId(id);
db.test.find({_id:o_id})

编辑:修正为new ObjectId(id),而不是new ObjectId(id)

如果你正在研究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});

我觉得你最好这样写:

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