【问题标题】:How to make hierarchical structed database in mongodb?如何在mongodb中制作层次结构数据库?
【发布时间】:2020-03-10 18:48:31
【问题描述】:

我想在mongodb中实现一个层次结构的数据库
有人可以解释一下如何构建这个


类似这样的东西


这里所有的叶子节点都会有多个数据,就像一个数组。例如。所有叶节点都会有员工详细信息。


或者为了更好地理解,我可以实现这样的数据库

根据要求提供其他信息:

假设我有一个电子商务网站,我希望为每种类型的项目创建一个节点。每个节点将单独拥有产品列表。
例如。主要节点——食物、文具、游戏
而Food有一份食物清单作为文件 同样,Stationary 也有很多物品和游戏。

【问题讨论】:

  • 你能在每层之后写一个数字吗(假设一年后有多少路面改善条目,1个路面改善有多少重建条目等等)。分享估算
  • 建模数据的主要方面之一是使用模式;意思是,您的主要查询是什么以及多久?在此基础上,模型将形成。请发布此信息。

标签: node.js database mongodb firebase-realtime-database


【解决方案1】:

方法一:在mongodb中,你可以有如下嵌入文档

{
    parent: { 
        level1: [{
           level2: [{
              myField: myValue1
           }, 
           {
              myField: myValue2
           }]
        },
        {
           level2: [{
              myField: myValue1
           }, 
           {
              myField: myValue2
           }] 
    }
}

请注意,每个 mongodb 文档的默认限制为 16mb。因此,只要您的孩子人数不多而超过文档限制,这种方法就可以正常工作。虽然可以,但除非没有其他办法,否则我不建议更改默认文档大小限制。

方法 2:为每个集合创建不同的集合,并为父级创建一个参考字段

//Collection1: parent
{
   id: "1", 
   ....
}

//Collection1 : level1
{
  id: "dsf",
  parentId: 1,
  ...
}

//Collection1: level2
{
  id: "bs",
  level1Id: "dsf",
  ...
}

【讨论】:

  • 在您的方法 2 中,如果我在所有集合中使用 key level_Id 这样我可以递归迭代回来(以防我落在随机文档上)会不会更好?
  • 是的,好主意。写下插入查询,这应该让您更清楚是否这样做。如果这个答案对你有帮助,请点赞并接受答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多