通过对象匹配在MongoDB中查询文档

时间:2016-06-15 15:47:30

标签: java mongodb

如何找到包含给定JSON对象的文档?

示例:

假设在数据库test中有一个这样的文档:

{
  "identification": {
    "componentId": "3a4f6199-6141-4179-ac5f-f1bbcf627bb2",
    "componentType": "PivotTable",
    "dataDate": "2016-06-15T15:29:51.139+0200",
    "dataType": "PTF",
    "properties": {
      "contextId": "0329fe70-92f0-4b60-b3c2-79377adb8f95",
      "tags": ["tag1", "tag2"]
    }
  },
  "viewData": {
    "lineGroups": []
  }
}

现在仅给出文档的identification部分,其中部分键设置为值:

{
    "componentType": "PivotTable",
    "properties": {
      "tags": ["tag1"]
    }
}

由于上述文件的识别部分与给定的识别相匹配,因此应该返回该文件。

如果我db.test.find({identification: {/*the given identification segment*/}}),mongodb将通过检查文档中的每个条目直接比较识别部分。在这种情况下,不会返回该文档。

mongodb查询语言中是否有一种方法允许我以相对简单或简单的方式执行此操作?或者我必须递归地解析Identification对象中的条目以构造查询?

1 个答案:

答案 0 :(得分:0)

Mongo将尝试匹配WHOLE属性子文档, 所以在这种情况下,我们必须提供1:1的文件。

您可以尝试使其工作的方法是展开每个元素并将其添加到查询过滤器部分。

{
    "componentType": "PivotTable",
    "properties.tags": {$in:["tag1"]}    
}
相关问题