【发布时间】:2022-01-11 18:56:53
【问题描述】:
我是 cypher 的初学者,想创建一个查询来查找连接到其他节点连接到它们的特定节点的所有节点, see the example
我需要获取连接到蓝色节点所连接的红色节点的所有棕色节点。
对于这个例子,我想获取棕色节点 ID:2、3 和 1(因为没有红色节点需要获取它)
目前我在 2 个不同的查询中执行此操作并使用 python 来查找它,但现在我需要在 1 个查询中执行此操作。
Match (r:R)-[]-(a:A) return collect(a.Id)
第二个查询:
Match (b:B) Optional Match (b)-[]-(a:A) return b.Id, collect(a.Id)
并在我的脚本中检查第二个查询中的每条记录是否是连接到 R 的所有 a.Id 的第一个列表的子集
我可以在 1 个查询中完成吗? 谢谢!
【问题讨论】:
-
我认为你的意思是你想要棕色节点 2,3,4 但不是 1 因为它不是通过红色节点连接的。对吗?
-
@bechbd 嗨,不,这不是我的意思,我将尝试解释它,换句话说,我需要获取所有棕色节点,如果它们连接到红色节点,则蓝色节点必须连接对于他们所有人,在这个例子中,B-4 没有连接到 3 个红色,但蓝色只连接到其中的 2 个,所以我不想要 B-4。 B-2 和 B-3 连接到蓝色连接的相同红色,所以没关系,对于 B-1 ,因为它没有连接到任何红色,所以没关系,希望它有意义:)
标签: graph neo4j cypher graphdb neptune