Neo4J编写密码查询的正确方法

Neo4J编写密码查询的正确方法,neo4j,cypher,Neo4j,Cypher,目前我有以下密码查询: MATCH (co1:CORPORATION)<-[:is_employee_of]-(p:PERSON)-[:has_personal_account]->(a1:ACCOUNT)- [:transfer_origin]->(t:TRANSFER)<-[:transfer_destination]-(a2:ACCOUNT)<-[:has_corporate_account]- (co2:CORPORATION)-[:incorporat

目前我有以下密码查询:

MATCH (co1:CORPORATION)<-[:is_employee_of]-(p:PERSON)-[:has_personal_account]->(a1:ACCOUNT)- 
[:transfer_origin]->(t:TRANSFER)<-[:transfer_destination]-(a2:ACCOUNT)<-[:has_corporate_account]- 
(co2:CORPORATION)-[:incorporated_in]->(c:COUNTRY)
WHERE c.IS_TAX_HAVEN = 1
RETURN co1
匹配(co1:公司)(a1:账户)——

[:transfer\u origin]->(t:transfer)关于性能,您的特定
匹配模式可能不需要拆分。然而,为了更好的(人类)可读性,您可能无论如何都要将其拆分——无论哪种方式,密码解析器通常都会生成相同的执行计划

例如,您的查询可以从较短的
匹配
模式开始,该模式更容易理解,并且与
WHERE
子句联系更紧密:

MATCH (a2:ACCOUNT)<-[:has_corporate_account]-(:CORPORATION)-[:incorporated_in]->(c:COUNTRY)
WHERE c.IS_TAX_HAVEN = 1
MATCH
  (a1:ACCOUNT)-[:transfer_origin]->(:TRANSFER)<-[:transfer_destination]-(a2),
  (co1:CORPORATION)<-[:is_employee_of]-(:PERSON)-[:has_personal_account]->(a1)
RETURN DISTINCT co1
匹配(a2:账户)(c:国家)
式中,c.IS\u TAX\u HAVEN=1
匹配

(a1:账户)-[:转账\来源]->(:转账)您想要实现什么?