【发布时间】:2015-05-22 19:39:41
【问题描述】:
我在 Neo4j 中有以下数据:
CREATE (t1:T {start:1, end:8})
CREATE (t2:T {start:1, end:4})
CREATE (t3:T {start:1, end:2})
CREATE (t4:T {start:3, end:4})
CREATE (t5:T {start:5, end:6})
CREATE (t6:T {start:7, end:8})
CREATE (t2)-[r1:T_OF]->(t1)
CREATE (t3)-[r2:T_OF]->(t2)
CREATE (t4)-[r3:T_OF]->(t2)
CREATE (t5)-[r4:T_OF]->(t1)
CREATE (t6)-[r5:T_OF]->(t1)
这将创建一个具有开始值和结束值的树,在我的实际应用程序中它们是纪元日期。我希望能够找到在给定范围内没有附加更短/更小节点的节点。
MATCH (t:T)
WHERE t.start >= 1 AND t.end <= 6
(MAGIC)
RETURN t
我的目标是只返回t2 和t5,即使t3 和t4 属于该范围。由于它们与t2 具有T_OF 关系,因此应忽略它们。
我尝试了几种不同的方法,但不幸的是我无法弄清楚这一点。
如果我应该更好地解释,请告诉我。
【问题讨论】:
-
“更短/更小的节点”是什么意思,
T_OF关系的重要性是什么? -
在实际应用中,这些是一个学年的条款。你有最高学期,学年,以及第 1 学期和第 2 学期的子学期,还有更小的学期 1-4,甚至更小的学期与季度。例如,这个想法是返回一个范围内的术语,而不包括子术语。例如,获取第 1 季度,但不获取下面的时期。