Neo4j 匹配子句和Where子句的显著差异
我有两个问题——一个是限制比赛,另一个是限制在哪里。它们都基于northwind数据集Neo4j 匹配子句和Where子句的显著差异,neo4j,cypher,Neo4j,Cypher,我有两个问题——一个是限制比赛,另一个是限制在哪里。它们都基于northwind数据集 MATCH(n:Employee)-[:sell]->(:Order{shipName:“北/南”})退货(n) 返回3个节点Andrew、Janet和Janet(注意Janet的重复项) 匹配(n:Employee),其中(n)-[:sell]->(:Order{shipName:“北/南”})返回n 返回2个结果Andrew和Janet 最后,我有第三个查询,它的特点是: 匹配(n:Employe
MATCH(n:Employee)-[:sell]->(:Order{shipName:“北/南”})退货(n)
- 返回3个节点Andrew、Janet和Janet(注意Janet的重复项)
匹配(n:Employee),其中(n)-[:sell]->(:Order{shipName:“北/南”})返回n
- 返回2个结果Andrew和Janet
匹配(n:Employee)-[:sell]>(o:Order{shipName:“北/南”})其中(n)-[:sell]>(:Order{shipName:“北/南”})返回n
- 这还返回了3个节点,查询顺序有点让人惊讶——匹配应用在where
我误解了什么吗?我想你的困惑是因为MATCH()是关于模式的,WHERE是关于单个逻辑的是/否。此外,我认为Janet在系统中有两个顺序,而Andrew有一个顺序,当不使用WHERE时,它会影响MATCH()返回的结果 模型1返回“Employee”和“Order”标记节点的联接,由于Janet有两个订单,她报告了两次,而Andrew报告了一次 模型2的措辞为“此员工在系统中是否有任何订单?”这是因为WHERE短语为每个员工节点返回一个true/false。这就是为什么你只看到安德鲁和珍妮特一次而不是珍妮特两次
模型3是模型1和模型2的组合,它返回两组结果的“并集”。我想您可能会感到困惑,因为MATCH()是关于模式的,而WHERE是关于单个逻辑是/否的。此外,我认为Janet在系统中有两个顺序,而Andrew有一个顺序影响MATCH()返回的结果当没有使用WHERE时 模型1返回“Employee”和“Order”标记节点的联接,由于Janet有两个订单,她报告了两次,而Andrew报告了一次 模型2的措辞为“此员工在系统中是否有任何订单?”这是因为WHERE短语为每个员工节点返回一个true/false。这就是为什么你只看到安德鲁和珍妮特一次而不是珍妮特两次
模型3是模型1和2的组合,它返回两组结果的“并集”。您的模型看起来怎么样?@MicTech您的模型看起来怎么样?@MicTech