我想获取除钱包对之外的所有钱包节点,它们之间只有一个-- objectbricks
-- localized field
关系,与任何其他钱包没有:SendTo
关系。这个查询是否正确用于此目的?:
:SendTo
从我做过的测试中,我会说它是正确的。但我更愿意接受第二种意见。
AS如何创建图表:每个钱包节点通过一个或多个单向MATCH (n:Wallet)
OPTIONAL MATCH (n)-[r1:SendTo]-(n1:Wallet)-[r12:SendTo]-(n2:Wallet)
WHERE n <> n1
WITH n,count(n1) + count(n2) as rels
OPTIONAL MATCH (n3:Wallet)-[r2:SendTo]-(n)-[r22:SendTo]-(n4:Wallet)
WHERE n <> n3
WITH n, rels, count(n3) + count(n4) as rels1
WHERE rels1 > 0 or rels>0
return n
关系连接到另一个钱包节点或其自身。在同一个两个钱包节点之间可以有多个这样的关系。
答案 0 :(得分:2)
您的查询提出了很多要求一个简单的问题“查找所有0或2 +边的钱包”。所以,即使它在技术上是正确的(太难阅读,太多了),它也会表现得很慢。所以你真正想要的是
MATCH (w:Wallet)
WITH w, size((n)-[:SendTo]-()) as edges
WHERE edges = 0 OR 1 < edges
RETURN w
(作为一般规则,如果您不确定某些事情在做什么,那么它或者是错误的,或者有人会试图“修复”并使其出错)