我有以下结构:
{
"FiledA" : "FiledAValue",
"FiledB" : "FiledBValue",
"FiledC" : {
"X" : "XValue",
"Y" : "YValue",
"Z" : "ZValue"
},
}
{"FiledA" : "12" , "FiledC" : "333"}
之类的查询
对于FiledA,查询应匹配12,如果有任何FiledC,其中一个filds包含333 如何解决查询中的FiledC问题?
提前致谢...
答案 0 :(得分:5)
您不应使用动态字段进行查询。如果不单独检查所有字段,则无法查询这些字段。 this answer
举例说明了类似的方法如果您愿意更改架构,我建议您将其更改为:
{
FieldC:[
{name:"X", value:"value1"},
{name:"Y", value:"value2"},
{name:"Z", value:"value3"}
]
}
您现在可以使用以下方式查询:
db.collection.find({"FieldC.value":"testValue"});