Mongo查询嵌入式文档中的动态字段

时间:2016-03-28 11:16:17

标签: mongodb

我有以下结构:

{
   "FiledA" : "FiledAValue",
   "FiledB" : "FiledBValue",
   "FiledC" : {
          "X" : "XValue",
          "Y" : "YValue",
          "Z" : "ZValue"
   },
}
  • FiledC 内容可能是动态的(其他文件不是x,y,z)
  • 用户将发送{"FiledA" : "12" , "FiledC" : "333"}之类的查询 对于FiledA,查询应匹配12,如果有任何FiledC,其中一个filds包含333

如何解决查询中的FiledC问题

提前致谢...

1 个答案:

答案 0 :(得分:5)

您不应使用动态字段进行查询。如果不单独检查所有字段,则无法查询这些字段。 this answer

举例说明了类似的方法

如果您愿意更改架构,我建议您将其更改为:

{
   FieldC:[
      {name:"X", value:"value1"},
      {name:"Y", value:"value2"},
      {name:"Z", value:"value3"}
   ]
}

您现在可以使用以下方式查询:

db.collection.find({"FieldC.value":"testValue"});