它可能是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开发人员来说很明显的事情,比如设置索引。