如何在Mongo DB中查找/更新嵌套文档

时间:2014-12-10 17:03:32

标签: mongodb mongodb-query nested-lists

它可能是Mongo数据库架构问题。在我目前的架构中,我遇到了如何正确更新文档的障碍。这是我做的:

任务是在Mongo中建模一个非常大的XML / HTML文档。该文档可以由多个用户同时编辑,每个人都可以编辑他们自己的文档部分。文档中的每个句子都有一个ID,可以从文档的其他部分引用。句子可以在文档中移动,但由于唯一的ID,将保留引用。这些要求导致文档在Mongo中被建模为一组嵌套的文档数组。挑战在于快速检索和更新结构中的任何句子或文档。

这是一个问题:当我事先不知道结构时,如何快速通过ID检索嵌套文档?此外,还需要更新这些嵌套文档中的字段。是否可以运行执行此操作的Mongo查询,还是需要手动遍历树并构建自定义功能来处理并发文档更新?只是为了得到一个想法,我有一个类似下面的结构,但有更多的字段和无限量的水平。我想运行这样的查询:

MyCollection.find({ _id : ObjectID("myID") } ) 

显然,这不会通过ID检索嵌套文档。

结构是:

{      
  "id_": {
    "$oid": "5488732a44ae21d08f94fb6f"
  },
  "container": [
    {
      "_id": {
        "$oid": "5488742344ae21d08f94fb70"
      },
      "container": [
        [
          {
            "_id": {
              "$oid": "5488746c44ae21d08f94fb71" },
              "container" : [
                  etc.
                ]                
          },
          {
            "_id": {
              "$oid": "5488748444ae21d08f94fb72"
            }
          }
        ]
      ]
    },
    {
      "_id": {
        "$oid": "548874a744ae21d08f94fb73"
      },
      "container": [
        {
          "etc": ""
        }
      ]
    }
  ]
}

PS。我是Mongo的新手,所以我没有做过任何对经验丰富的MongoDB开发人员来说很明显的事情,比如设置索引。

0 个答案:

没有答案