美文网首页
NoSQL数据模型设计 - 树结构建模 - 物化路径模式

NoSQL数据模型设计 - 树结构建模 - 物化路径模式

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

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

    此模式每个节点是一个文档,并且节点保存祖先节点的路径字符串。尽管此模式需要处理字符串和正则表达式等额外工作,但它可以提供更大的灵活性比如按照部分路径查询。

    以下面分类层级为例

    创建文档

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

    按照路径排序获得整棵树

    db.categories.find().sort( { path: 1 } )
    

    采用正则表达式获得指定节点的子孙

    db.categories.find( { path: /,Programming,/ } )
    

    在path字段上创建索引

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

    如果查询提供从根节点开始的路径例如/^,Books,/ 或/^,Books,Programming,/,此索引能够快速匹配结果。

    如果查询提供中间路径,需要扫描整个索引返回结果。但如果索引比collection小很多,还是能提高性能。

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

    相关文章

      网友评论

          本文标题:NoSQL数据模型设计 - 树结构建模 - 物化路径模式

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