美文网首页
NoSQL数据模型设计 - 树结构建模 - 祖先数组模式

NoSQL数据模型设计 - 树结构建模 - 祖先数组模式

作者: 李桐2000 | 来源:发表于2020-09-26 10:14 被阅读0次

    本文为NoSQL数据模型设计系列的一部分。

    此模式每个节点是一个文档,并且节点保存祖先节点的引用数组。

    以下面分类层级为例

    创建文档

    db.categories.insertMany( [
      { _id: "MongoDB", ancestors: [ "Books", "Programming", "Databases" ], parent: "Databases" },
      { _id: "dbm", ancestors: [ "Books", "Programming", "Databases" ], parent: "Databases" },
      { _id: "Databases", ancestors: [ "Books", "Programming" ], parent: "Programming" },
      { _id: "Languages", ancestors: [ "Books", "Programming" ], parent: "Programming" },
      { _id: "Programming", ancestors: [ "Books" ], parent: "Books" },
      { _id: "Books", ancestors: [ ], parent: null }
    ] )
    

    直接获取祖先节点

    db.categories.findOne( { _id: "MongoDB" } ).ancestors
    

    在ancestors字段上创建索引

    db.categories.createIndex( { ancestors: 1 } )
    

    可以获取子孙节点

    db.categories.find( { ancestors: "Programming" } )
    

    此模式比物化路径模式性能稍差,但是用起来更直接。

    完整内容请查看NoSQL数据模型设计系列

    相关文章

      网友评论

          本文标题:NoSQL数据模型设计 - 树结构建模 - 祖先数组模式

          本文链接:https://www.haomeiwen.com/subject/nklcuktx.html