【发布时间】:2016-01-11 17:41:13
【问题描述】:
在 OrientDB 中,每个顶点都有连接的边。这意味着可以使用嵌套的“select”语句从集合中显式遍历节点。
举个例子:给定一个节点属性的路径,找到匹配的结束节点。
路径由节点属性列表组成(例如,kind 在路径中的节点中是唯一的)。
现在,假设我有一棵树:
kind=site, name=site1
-- kind=project, name=project1
-- kind=library, name=library1
kind=site, name=site2
-- kind=project, name=project2
-- kind=library, name=library1
用户想从名为 library1 的库中获取信息,路径为:
[{kind=site},{kind=project,name=project1},{kind=library,name=library1}]
只要结果是单个节点,不让每个节点都完全符合遍历条件是可以的。
在 OrientDB 中,过程是:
- 从 kind=site 的所有节点开始
- 穿过“子”边缘并收集所有属于 kind=project 和 name=project1
- 穿过子边缘并收集所有属于 kind=library 和 name=library1
这可以在嵌套的 select 语句中完成。 kind 字段是索引的,因此可以从大量对象中快速收集起始节点。为了进一步提高性能,我知道哪些表(集合)中有哪些类型,因此我可以确定要从中选择的对象数量(从