【发布时间】:2019-10-23 06:13:51
【问题描述】:
我正在使用 pymongo 3.7.2 版和 python 3.6.8。我的数据库中有以下格式的文档:
{"_id" : 1,
"main_array":[
{"subid":222,
"subarray":[{"name":"hari","status":1},{"name":"henry","status":1}]
},
{"subid":333,
"subarray":[{"name":"james","status":0},{"name":"jason","status":1}]
}]
},
{"_id" : 2,
"main_array":[
{"subid":222,
"subarray":[{"name":"alex","status":1},{"name":"anna","status":1}]
},
{"subid":333,
"subarray":[{"name":"bob","status":0},{"name":"bunny","status":1}]
}]
}
我需要从集合中的所有文档中获取 subid = 222 的对象。所需结果应如下所示:
{"_id" : 1,
"main_array":[
{"subid":222,
"subarray":[{"name":"hari","status":1},{"name":"henry","status":1}]
}]
},
{"_id" : 2,
"main_array":[
{"subid":222,
"subarray":[{"name":"alex","status":1},{"name":"anna","status":1}]
}]
}
我尝试了以下代码:
myclient = pymongo.MongoClient(<mongoclient url>)
mydb = myclient["test"]
mycol = mydb["user"]
subid = 222
_id = 1
x = mycol.find({"_id":_id},{"main_array":{"$elemMatch":{"subid":subid}}})
我得到了特定文档所需的结果。但我需要所有的文件。我尝试了以下查询:
x = mycol.find({"main_array":{"$elemMatch":{"subid":subid}}})
但这一次它返回整个集合。我错过了什么?
【问题讨论】: