Neo4j 如何使用密码验证路径中是否存在某些节点

Neo4j 如何使用密码验证路径中是否存在某些节点,neo4j,cypher,Neo4j,Cypher,我希望获得两个节点之间的所有路径,以便这些路径中至少存在一个节点列表中的节点 如何使用cypher实现这一点?假设您已将节点列表作为cypher集合提供,这是否可以完成此任务 MATCH path=(start)-[r:*1..100]-(end) WHERE ANY(node_on_path in NODES(path) WHERE node_on_path IN node_collection) 您还可以尝试使用检查路径上节点的值列表,如 MATCH path=(start)-[r:

我希望获得两个节点之间的所有路径,以便这些路径中至少存在一个节点列表中的节点


如何使用cypher实现这一点?

假设您已将节点列表作为cypher集合提供,这是否可以完成此任务

MATCH path=(start)-[r:*1..100]-(end)
WHERE ANY(node_on_path in NODES(path) 
  WHERE node_on_path IN node_collection)
您还可以尝试使用检查路径上节点的值列表,如

MATCH path=(start)-[r:1..100]-(end)
WHERE ANY(node_on_path in NODES(path)
  WHERE node_on_path.some_property IN list_of_acceptable_values)

您不需要指定最大跳数。在这种情况下,您可以只使用
[r:*1..]
。这是正确的,没有必要。但是你可能不想在不知道OPs数据的情况下推荐无限路径模式。完全同意。只是刚刚接触Cypher的人可能没有意识到可以省略min和/或max。如果我只想检查中间节点并排除第一个和最后一个节点,该怎么办?如何获取节点集合?您可以通过切片
节点(路径)
生成的集合来排除第一个和最后一个节点,尝试类似
节点(路径)[1..LENGTH(path)-1]
的操作。获取节点集合的方法有很多,例如
COLLECT()
。你能说得更准确些吗?另外,请看和