【发布时间】:2015-12-02 13:28:51
【问题描述】:
我有这张图:
A<-B->C
B 是一棵小树的根。 A 和 B 之间只有一种关系,B 和 C 之间只有一种关系。
当我运行以下命令时,会返回一个节点。为什么这个 Cypher 查询不返回 A 和 C 节点?
MATCH(a {name:"A"})<-[]-(rewt)-[]->(c) RETURN c
似乎该查询的前半部分会找到根,后半部分会找到两个子节点。
直到几分钟前,我还以为它在逻辑上与以下有效的查询相同。有什么区别?
MATCH (a {name:"A"})<-[]-(rewt)
MATCH (rewt)-[]->(c)
RETURN c
为cybersam编辑
我已经提取了我的数据库,以便我们讨论我的具体问题。现在,我们还有一棵小树,但有 4 个节点是根的子节点。(对不起,这不一样,但我正在开发,不想过多改变我的环境。)
此查询返回所有 4 个:
match(a)<-[]-(b:ROOT)-[]->(c) return c
其中一个的名字是“dddd”...
match(a {name"dddd"})<-[]-(b:ROOT)-[]->(c) return c
这个查询只返回三个。不包括“dddd”。天哪。
要回答cybersam的具体问题,这个查询:
MATCH (a {name:"dddd"})<--(rewt:CODE_ROOT)
MATCH (rewt)-->(c)
RETURN a = c;
返回四行。值为true, false, false, false
【问题讨论】: