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:账户)-[:转账\来源]->(:转账)您想要实现什么?