gpt4 book ai didi

neo4j cypher 匹配命令串联

转载 作者:行者123 更新时间:2023-12-01 11:32:38 25 4
gpt4 key购买 nike

这两个 Chypher 语句是否相同:

//first
match (a)-[r]->(b),b-[r2]->c

//second
match (a)-[r]->(b)
match b-[r2]->c

最佳答案

2 个 Cypher 语句并不相同。我们可以使用 PROFILE command 来显示这一点,它向您展示了 Cypher 引擎将如何执行查询。

在下面的示例中,查询都以 RETURN a, c 结尾,因为您不能有一个裸露的 MATCH 子句。

如您所见,第一个查询有一个 NOT(r == r2) 过滤器,而第二个查询没有。这是因为 Cypher 确保单个 MATCH 子句的结果不包含重复关系。

  1. 第一次查询

    profile match (a)-[r]->(b),b-[r2]->c return a,c;
    ==> +-----------------------------------------------+
    ==> | a | c |
    ==> +-----------------------------------------------+
    ==> | Node[1]{name:"World"} | Node[0]{name:"World"} |
    ==> +-----------------------------------------------+
    ==> 1 row
    ==> 2 ms
    ==>
    ==> Compiler CYPHER 2.3
    ==>
    ==> Planner COST
    ==>
    ==> Runtime INTERPRETED
    ==>
    ==> Projection
    ==> |
    ==> +Filter
    ==> |
    ==> +Expand(All)(0)
    ==> |
    ==> +Expand(All)(1)
    ==> |
    ==> +AllNodesScan
    ==>
    ==> +----------------+---------------+------+--------+----------------+----------------+
    ==> | Operator | EstimatedRows | Rows | DbHits | Identifiers | Other |
    ==> +----------------+---------------+------+--------+----------------+----------------+
    ==> | Projection | 1 | 1 | 0 | a, b, c, r, r2 | a; c |
    ==> | Filter | 1 | 1 | 0 | a, b, c, r, r2 | NOT(r == r2) |
    ==> | Expand(All)(0) | 1 | 2 | 4 | a, b, c, r, r2 | (b)-[r2:]->(c) |
    ==> | Expand(All)(1) | 2 | 2 | 8 | a, b, r | (b)<-[r:]-(a) |
    ==> | AllNodesScan | 6 | 6 | 7 | b | |
    ==> +----------------+---------------+------+--------+----------------+----------------+
    ==>
  2. 第二次查询

    profile match (a)-[r]->(b) match b-[r2]->c return a,c;
    ==> +-----------------------------------------------+
    ==> | a | c |
    ==> +-----------------------------------------------+
    ==> | Node[1]{name:"World"} | Node[1]{name:"World"} |
    ==> | Node[1]{name:"World"} | Node[0]{name:"World"} |
    ==> +-----------------------------------------------+
    ==> 2 rows
    ==> 2 ms
    ==>
    ==> Compiler CYPHER 2.3
    ==>
    ==> Planner COST
    ==>
    ==> Runtime INTERPRETED
    ==>
    ==> Projection
    ==> |
    ==> +Expand(All)(0)
    ==> |
    ==> +Expand(All)(1)
    ==> |
    ==> +AllNodesScan
    ==>
    ==> +----------------+---------------+------+--------+----------------+----------------+
    ==> | Operator | EstimatedRows | Rows | DbHits | Identifiers | Other |
    ==> +----------------+---------------+------+--------+----------------+----------------+
    ==> | Projection | 1 | 2 | 0 | a, b, c, r, r2 | a; c |
    ==> | Expand(All)(0) | 1 | 2 | 4 | a, b, c, r, r2 | (b)-[r2:]->(c) |
    ==> | Expand(All)(1) | 2 | 2 | 8 | a, b, r | (b)<-[r:]-(a) |
    ==> | AllNodesScan | 6 | 6 | 7 | b | |
    ==> +----------------+---------------+------+--------+----------------+----------------+

关于neo4j cypher 匹配命令串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31001752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com