我在mongoDB中遇到了查询问题。
此查询已执行:
db.client_data.find(
... {
... client_data_type_id : ObjectId("533bde998a223858e3c8d352"), "list_attributes.535e70158a22382679a738d3" : "535f5b798a22383f5a59c86f"
... },
... {
... _id : 1
... } )
给了我这个结果
{ "_id" : ObjectId("535f5bb78a22383f5a59c870") }
{ "_id" : ObjectId("535f5bd28a22383f5a59c871") }
{ "_id" : ObjectId("535f5bda8a22383f5a59c872") }
我现在想要执行此查询:
db.client_data.find(
{
client_data_type_id : ObjectId("533a7d258a22383070aa1092"),
"list_attributes.535e27768a22387ca86974cb" :
{
$in : [
db.client_data.find(
{
client_data_type_id : ObjectId("533bde998a223858e3c8d352"), "list_attributes.535e70158a22382679a738d3" : "535f5b798a22383f5a59c86f"
},
{
_id : 1
} )
]
}
},
{
_id : 0,
list_attributes : 1
}
)
如果我用字符串执行此查询,它可以工作:
db.client_data.find(
{
client_data_type_id : ObjectId("533a7d258a22383070aa1092"),
"list_attributes.535e27768a22387ca86974cb" :
{
$in : [
"535f5bda8a22383f5a59c872",
"535f5bd28a22383f5a59c871",
"535f5bb78a22383f5a59c870",
]
}
},
{
_id : 0,
list_attributes : 1
}
)
这给了我正确的结果。 但是使用子查询,它不起作用,因为子查询给了我ObjectID,我必须用String执行查询。
你知道怎么做吗??
非常感谢!
答案 0 :(得分:1)
您可以使用str(objectid)将ObjectId转换为十六进制表示。