我有这个图:的Cypher查询不返回所有预期的节点
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
感谢您的答复。你能澄清你最后一句话吗?你的意思是关于第一个查询吗? –
是的。我已经更新了我的答案,并且可以执行查询来查看我是否正确。 – cybersam
OP已更新。你似乎是部分正确的。 –