搜索MongoDB嵌套树对象

时间:2014-10-11 05:38:32

标签: mongodb

假设我在MongoDB中有一个如下所示的JSON对象作为集合中的项目之一。

data:{
name:"newData",
items:
      [
      {
        "id": 1,
        "title": "1. dragon-breath",
        "items": []
      },
      {
        "id": 2,
        "items": [
          {
            "id": 21,
            "title": "2.1. tofu-animation",
            "items": [
              {
                "id": 211,
                "title": "2.1.1. spooky-giraffe",
                "items": []
              },
              {
                "id": 212,
                "items": []
              }
            ]
          },
          {
            "id": 22,
            "title": "2.2. barehand-atomsplitting",
            "items": []
          }
        ]
      },
      {
        "id": 3,
        "title": "3. unicorn-zapper",
        "items": [
          {
            "id": 30,
            "title": "3. unicorn-zapper.1",
            "items": [
              {
                "id": 300,
                "title": "3. unicorn-zapper.1.1",
                "items": [
                  {
                    "id": 3000,
                    "title": "3. unicorn-zapper.1.1.1",
                    "items": [
                      {
                        "id": 30000,
                        "title": "3. unicorn-zapper.1.1.1.1",
                        "items": [
                          {
                            "id": 300000,
                            "title": "3. unicorn-zapper.1.1.1.1.1",
                            "items": []
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "id": 4,
        "title": "4. romantic-transclusion",
        "items": []
      }
    ]

它是一个连续的树结构,所有项目不一定需要具有“title”属性。如何在整个结构中搜索具有例如{“title”:“3.unicorn-zapper.1.1.1”}的标题的项目,并仅返回该项目。任何想法。

1 个答案:

答案 0 :(得分:0)

除了使用点表示法搜索索引之外,没有一种方法可以在MongoDB 2.6.5中搜索多个深度的数组。即使这样,也没有一种方法可以为多个深度的数组投射匹配文档的匹配数组元素。我认为您在构建文档之前没有考虑如何查询文档。如果您的数据中有嵌套/树状结构,请阅读data modeling docs on trees以获取有关如何比使用任意嵌套数组更好地建模此情况的建议。