我是Mongo的新手,并且一直试图找出构建我数据库部分的最佳方法。想象一下一个文档构建程序,其中用户通过选择“段落”来编写文本文档。来自预定义的模板。我的问题是如何存储模板结构;当用户保存他们的文本文档时,它完全独立且不复杂。
完整的模板'看起来如下(简化)。 :
{
description: 'Template 1',
someOtherField: '',
. . .
sections: [
{
description: 'Section 1',
paragraphs: [
{
description: 'Paragraph A',
subparagraphs : [
{
text: 'This is some text',
optionalTexts: [
{
text: 'This is optional'
},
. . more . .
]
}
. . more . .
]
}
. . more . .
]
}
}
正如您所看到的,它们是相当嵌套的,并且可能包含大量数据。
我正在运行查询以实现"列出属于模板56" ,"的部分。给我段落对象第1234条及第34条;以及单个项目的管理任务,"将第5678项的文本更新为......" ,"为第7568条创建一个新段落。 " 。
我目前有两个系列:
这是一个比使用更深层嵌套文档的集合更明智的方法吗?
如果没有"答案"对我的问题,一些好的资源将不胜感激。
由于
答案 0 :(得分:1)
查看this question的答案。在当前的mongo中,除非您明确知道子文档的索引,否则无法更新数组中深层嵌套的子文档。如果您计划更新子文档,则应该将它们分成单独的集合。
你可以将外键放在子文档中并搜索它们,但要注意Mongo没有连接的概念,所以根据你以后需要数据的方式,这可能会让你陷入困境*。
据我所知,这是Mongo的一个开放性问题,开发人员正在解决这个问题。这是open ticket