在MongoDB中存储和检索树:嵌入式文档与父级引用?

时间:2019-03-01 16:34:24

标签: javascript node.js mongodb

从关系数据库的背景来看,我想到存储树的唯一方法是:

关系 treeData

{
    _id: docID-1,
    itemName : 'Main Root',
    parent: null
},
{
    _id: docID-2,
    itemName: 'Child 1',
    parent: docID-1
},
{
    _id: docID-3,
    itemName: 'Child 2',
    parent: docID-1
}

我可以使用db.collection('treeData').find()来检索记录,并使用递归来检索树结构中的数据。

但是MongoDB提供了嵌入式文档,这些文档将树重构为:

{
    _id: docID-1,
    itemName : 'Main Root',
    children: [
         {
            _id: docID-2,
             itemName: 'Child 1'
         },
         {
            _id: docID-3,
             itemName: 'Child 2'
         }
    ]
}

我的问题是,如果使用嵌入式文档方法,那么检索(打印)此树的最佳方法是什么?

此外,我的目标是通过初始字符找到category/child category,我可以使用第一种方法进行查找,如下所示:

db.collection('treeData').find({ name : 'abc' })

使用嵌入式文档来实现此目的的有效方法是什么?

0 个答案:

没有答案