【发布时间】:2015-07-03 13:37:38
【问题描述】:
在OrientDB 中,我使用use case 设置了一个时间序列。但是,我没有将我的顶点作为嵌入列表附加到相应的小时,而是选择仅创建从小时到时间相关顶点的边。
为了争论,假设每个小时最多有 60 个时间Vertex,每个时间都由时间戳标识。这意味着我可以执行以下查询来获取特定的所需顶点:
SELECT FROM ( SELECT expand( month[5].day[12].hour[0].out() ) FROM Year WHERE year = 2015) WHERE timestamp = 1434146922
这个问题的第一部分是将时间戳存储为顶点的属性(如上查询)与将其存储为边缘(或边缘属性)是否有任何优点/缺点。在这种情况下,我认为查询将是:
SELECT expand( month[5].day[12].hour[0].out('1434146922') ) FROM Year WHERE year = 2015
虽然这看起来更优雅,但我有两个问题;创建新边缘类型的开销。如果您实际上不知道确切的时间戳,则具有灵活性。
问题的第二部分涉及这样一个事实,即一旦我根据时间隔离了单个 Vertex,这只是 Vertex 层次结构树的头部。
我当然可以从上面的查询中得到@rid,然后构造一个新的查询,但我想知道如何调整上面的内容来完成所有这些。例如,假设在所有层次顶点中有一个名为active 的boolean 属性。如何获取所有true 的顶点?
【问题讨论】: