Neo4j:如何修复match子句中的一个节点?
对于Neo4j:如何修复match子句中的一个节点?,neo4j,cypher,Neo4j,Cypher,对于匹配(a:Address)-[:BelongTo]->(w1:Wallet),(a)-[r0:BelongTo]->(w2:Wallet)这样的子句,其中ID(w1)>ID(w2)与w1,w2…,是否可以确保ex.w1始终是固定节点?如果是,是否可以通过选择在所有节点(也可以是w1)上具有某个属性的ex.最小值的节点来决定节点 更具体地说,例如,地址a属于钱包a、b、c,在ID方面a>b>c。然后通常会返回这些结果行: w1 w2 -------- a b b c a c
匹配(a:Address)-[:BelongTo]->(w1:Wallet),(a)-[r0:BelongTo]->(w2:Wallet)这样的子句,其中ID(w1)>ID(w2)与w1,w2…
,是否可以确保ex.w1始终是固定节点?如果是,是否可以通过选择在所有节点(也可以是w1)上具有某个属性的ex.最小值的节点来决定节点
更具体地说,例如,地址a属于钱包a、b、c,在ID方面a>b>c。然后通常会返回这些结果行:
w1 w2
--------
a b
b c
a c
w1 w2
--------
a b
a c
我只希望返回这两行结果:
w1 w2
--------
a b
b c
a c
w1 w2
--------
a b
a c
注意:我希望查询尝试获取每一对钱包的地址。如果归还了一个钱包,则应包括属于两个或多个钱包的所有地址
例如,如果有两个地址属于三个不同的钱包,那么您发布的查询会做什么?
更具体地说,如果地址a1和a2分别属于b1、c1、d1和b2、c2、d2(就id而言,b1>c1>d1>b2>c2>d2)
我希望它能返回:
a w1 w2
-----------
a1 b1 c1
a1 b1 d1
a2 b2 c2
a2 b2 d2
是否可能?是的,您可以通过查找(每个a:地址)具有最小id的:钱包来完成此操作。匹配到此:钱包后,您可以匹配所有其他:钱包
MATCH (a:Address)-[:BelongTo]->(w1:Wallet)
WITH a, min(id(w1)) as minId
// since we have the minId, we can do a fast lookup of the node
MATCH (minW:Wallet)
WHERE id(minW) = minId
// now get all the others
MATCH (a)-[:BelongTo]->(w2:Wallet)
WHERE minW <> w2
...
不清楚当前查询试图做什么以及原因。它是试图为一个地址或所有地址获取每一对钱包?所有地址。我想让它试着把每一对钱包都拿到一个地址。如果归还了一个钱包,则应包括属于两个或多个钱包的所有地址。我会更新这个问题。