【发布时间】:2017-01-26 22:22:55
【问题描述】:
我有一个图表,但需要确保所有节点都在路径中(但路径中可以存在的节点多于这些节点)。
这是一个例子(对不起,不得不把一些东西涂黑):
当我在传入的列表中的所有三个中间节点中都具有相同属性的值时,我想查找 end2 而不是 end1。但是我无法获得将在没有 end1 的情况下返回 end2 的查询。那里可以有更多具有相同路由的节点,但我只会传递不同的值,这些值不会在中间节点上重复。任何人都知道一个查询,它只会给我一个包含来自中间节点的所有值的端节点?还有一些节点挂在这些端节点上,其中一些节点在 end1 和 end2 之间互连。其他一些没有,那些是我不想要的节点,但因为黄色和蓝色之间有一条路径到那一端1我不能使用任何但因为有其他路径到这些相同的节点(未图示)我不能使用全部。
提前感谢您的帮助。
[更新] 这是我使用的当前查询,但它只允许每个开始节点有一个“结束”节点,我想要多个。我需要传入的 id(eg)={eg_id} 但这将其限制为一个。我更愿意使用以下路径中的每个 a 都需要匹配中间节点中的名称属性列表才能到达哪个端节点的事实。因此,如果黄色和蓝色是混合的,那么 end1 和 end2 会回来,但如果黄色、蓝色和紫色都在那里,那么只有 end2 会回来。
start td = node({td_id})
match (td:Start)-[:Rel1]->(a)<-[:Rel2]-(eg:End)-[es:Rel3]->(n:WhatsPastEnd)
with collect(a.name) as pnl, n, td, eg, es
where id(eg) = {eg_id}
and all(param_needs in {param_name_list} where param_needs in pnl)
return n
order by es.order
[已解决]
非常感谢 InverseFalcon,从下面的解决方案中得到了我需要的东西!
【问题讨论】:
-
您能否编辑您的描述以提供您迄今为止尝试过的查询?
-
另外,如果你能提供节点标签,以及关于从开始到结束节点的路径的附加信息,包括允许在开始和结束节点之间遍历的关系类型,以及关于限制的任何信息路径长度?
-
更新了描述,如果有人可以看一下
-
您使用的是哪个版本的 Neo4j?