Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j:如何修复match子句中的一个节点?_Neo4j_Cypher - Fatal编程技术网

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
...

不清楚当前查询试图做什么以及原因。它是试图为一个地址或所有地址获取每一对钱包?所有地址。我想让它试着把每一对钱包都拿到一个地址。如果归还了一个钱包,则应包括属于两个或多个钱包的所有地址。我会更新这个问题。