美文网首页
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