【问题标题】:Mongo query on dynamic fields in embedded document [duplicate]Mongo查询嵌入文档中的动态字段[重复]
【发布时间】:2016-03-28 11:16:17
【问题描述】:

我有以下结构:

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

如何解决查询中的 FiledC 问题

提前致谢...

【问题讨论】:

  • 您不想在文档中使用动态字段的名称。很难相处。你应该考虑改变你的文档结构,使FieldC成为一个子文档数组。

标签: mongodb


【解决方案1】:

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

举例说明了类似的方法

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

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

您现在可以使用查询:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2011-11-04
    相关资源
    最近更新 更多