Neo4j 通过WITH来自上一个查询的结果将变量传递到START子句
我有一个带有“超边”的图结构,边属性具有图中某个节点的唯一属性。我想编写一个Cypher查询来查找这些边,然后使用该属性的值和后续的Neo4j 通过WITH来自上一个查询的结果将变量传递到START子句,neo4j,cypher,Neo4j,Cypher,我有一个带有“超边”的图结构,边属性具有图中某个节点的唯一属性。我想编写一个Cypher查询来查找这些边,然后使用该属性的值和后续的START子句来查找引用的节点。我尝试了一些方法,但最接近的方法是: MATCH (start)-[relationship]->(end) WHERE HAS(relationship.source) WITH start, end, relationship.source AS source START src = node:node_auto_index
START
子句来查找引用的节点。我尝试了一些方法,但最接近的方法是:
MATCH (start)-[relationship]->(end)
WHERE HAS(relationship.source)
WITH start, end, relationship.source AS source
START src = node:node_auto_index(src = {source})
RETURN start, end, src
它抱怨需要一个名为source
的参数
从{source}
中删除括号也会产生错误:
START src = node:node_auto_index(src = source)
我可以在后续查询中将该值传递给WHERE
子句,如下所示:
MATCH (start)-[relationship]->(end)
WHERE HAS(relationship.source)
WITH start, end, relationship.source AS source
MATCH (src)
WHERE src.src = source
RETURN start, end, src
但这并没有利用遗留索引,导致查询速度非常慢
有没有办法通过
WITH
将先前查询的结果传递给START
子句?+1是一个好问题!我希望我能得到答案,但我希望最终的答案是,“这不重要,因为我们将使MATCH
能够在未来的版本中利用遗留索引,所以您一开始就不会使用START
。”我知道这对您今天没有帮助。