我的Mongo数据库中只有一个文档:
{"_id" : ObjectId("569bbe3a65193cde93ce7092"),
"categories" : [{_id: 0, "category": "Groceries"},
{_id: 1, "category": "Bills"}, . . .]}
在我的项目中使用PyMongo,我得到此结果,调用
find_one()
:x = db.collection.find_one({"_id": "ObjectId(\"569bbe3a65193cde93ce7092\")"})
print(x)
// None
每当我在Mongo Shell中执行相同的查询时,它都会返回我的文档。我一辈子都无法弄清楚为什么这行不通。使用
find({})
返回文档,所以我知道PyMongo可以看到它。我可以调用
find_one({"categories": {"$exists": True}})
来检索文档,由于这将是唯一包含“类别”的文档,因此可以使用;但是,现在让我困惑的是,为什么通过_id
访问文档给我带来了这样的麻烦。逃避引号和引号包裹569bbe3a65193cde93ce7092
都没有任何区别。 最佳答案
要添加到@Simulant答案中,您需要从ObjectId
导入bson.objectid
:
from bson.objectid import ObjectId
x = db.collection.find_one({"_id": ObjectId("569bbe3a65193cde93ce7092")})
关于python - 当传递_id作为查询参数时,PyMongo find_one()不返回任何内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34841500/