我需要将以下模式理解添加到我的 Cypher 查询的返回语句中:
[ (rc:Criterion) WHERE rc.id IN childD.replaceableCriterionIds | {entity: rc} ] AS decisionReplaceableCriteria
但它失败并出现以下异常:
Caused by: org.neo4j.driver.exceptions.ClientException: Invalid input 'WHERE': expected "-", "<", <ARROW_LEFT_HEAD> or <ARROW_LINE>
仅当我添加与另一个节点的冗余关系时它才有效
[ (rc:Criterion)-[:CREATED_BY]->(:User) WHERE rc.id IN childD.replaceableCriterionIds | {entity: rc} ] AS decisionReplaceableCriteria
以下部分对于我的需求来说绝对是多余的:
-[:CREATED_BY]->(:User)
是否可以重写我的模式理解以避免这种冗余语法?
如果您使用的是 Neo4j 5.6+,则可以使用COLLECT 子查询。这是一个示例片段:
在 Neo4j 的早期版本中,您可以尝试 hack:
这使用指定长度为 0 的可变长度路径模式。如果您想查看此可变长度路径模式是否导致任何数据库命中,请分析您的查询并查看
VarLengthExpand
操作的“数据库命中”。