gpt4 book ai didi

neo4j - 单个(可选)MATCH 子句和多个 MATCH 子句之间的区别

转载 作者:行者123 更新时间:2023-12-02 04:37:50 26 4
gpt4 key购买 nike

有什么区别

OPTIONAL MATCH clauseA, clauseB

OPTIONAL MATCH clauseA
OPTIONAL MATCH clauseB

根据我使用的表单,我会得到不同的行为。

例如:

START n=node(111)
OPTIONAL MATCH n<-[links_n_in]-(n_from),n-[links_n_out]->(n_to)
RETURN n,COLLECT(n_from) AS n_from,COLLECT(links_n_in) AS links_n_in,COLLECT(n_to) AS n_to,COLLECT(links_n_out) AS links_n_out

旨在返回一个节点;它是来自节点的传入关系;它是传出关系和节点。

我有一个由节点 111 组成的测试图,它有 4 个传出关系,每个关系都指向同一个节点(我有其他测试用例,其中 111 指向不同的节点)。执行上述查询仅返回“n”列中的节点 111。 'n_from'、'links_n_in'、'n_to'、'links_n_out' 的列为空。

如果我将查询修改为:

START n=node(111)
OPTIONAL MATCH n<-[links_n_in]-(n_from)
OPTIONAL MATCH n-[links_n_out]->(n_to)
RETURN n,COLLECT(n_from) AS n_from,COLLECT(links_n_in) AS links_n_in,COLLECT(n_to) AS n_to,COLLECT(links_n_out) AS links_n_out

然后 n_to 和 link_n_out 列会按预期填充。

最佳答案

第一种形式将其视为必须完全匹配的单个扩展模式。

第二种形式将它们视为不同的可选模式,并且可以分别匹配两者。

因此,当您考虑它在做什么时,您的结果是有意义的——如果未找到整个可选匹配模式,则它不匹配任何可选匹配模式。

关于neo4j - 单个(可选)MATCH 子句和多个 MATCH 子句之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583728/

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