假设我的数据库中的这一项:
{"_id" : ObjectID("526fdde0ef501a7b0a51270e"),
"info": "foo",
"status": true,
"subitems : [ {"subitem_id" : ObjectID("65sfdde0ef501a7b0a51e270"),
//more},
{....}
],
//more
}
我想找到(或 find_one,没关系)带有"subitems.subitem_id" : xxx
.
我尝试了以下方法。它们都返回一个空列表。
from pymongo import MongoClient,errors
from bson.objectid import ObjectId
id = '65sfdde0ef501a7b0a51e270'
db.col.find({"subitems.subitem_id" : id } ) #obviously wrong
db.col.find({"subitems.subitem_id" : Objectid(id) })
db.col.find({"subitems.subitem_id" : {"$oid":id} })
db.col.find({"subitems.subitem_id.$oid" : id })
db.col.find({"subitems.$.subitem_id" : Objectid(id) })
然而,在 mongoshell 中,这个是有效的:
find({"subitems.subitem_id" : { "$oid" : "65sfdde0ef501a7b0a51e270" } })