Neo4j Cypher:Find/Merge 个节点至少有 2 个公共节点
Neo4j Cypher: Find/Merge nodes having atleast 2 common nodes
我是 Graph DB 和 Neo4j 的新手,需要帮助来查询至少有 2 个公共节点的数据
Graph
从上图中,我需要获取 ROW1 和 ROW2 的详细信息,因为它有 2 个公共节点 ID_B 和 ID_C
Graph 2 with more nodes having common neighbor
对于图 2,我需要将 Row1 、 Row2 和 Row3 的详细信息合并为
Row1 和 Row2 有 ID_B、ID_C 的共同点
Row2 & Row3 有 ID_A ,ID_B C 共同点
这个怎么样。
MATCH(r1:ROW)-[h1:HAS_ID]->(i1:ID)-[p1:PART_OF]->(r1)
MATCH(r2:ROW)-[h2:HAS_ID]->(i2:ID)-[p2:PART_OF]->(r2)
WHERE r1.ID <> r2.ID and i1.ID <> i2.ID
WITH r1, r2, COLLECT(i1) AS i1c, COLLECT(i2) AS i2c
WHERE SIZE(i1c) > 1 AND SIZE(i2c) > 1 AND SIZE(apoc.coll.intersection(i1c, i2c)) > 1
RETURN DISTINCT r1 AS row1, r2 AS row2, apoc.coll.intersection(i1c, i2c) AS ids
我想这样就可以了:
MATCH(r1:ROW)-[:HAS_ID]->(i)<-[:HAS_ID]-(r2:ROW)
WHERE id(r1) > id(r2)
WITH r1,r2, COLLECT(i) AS is
WHERE SIZE(is) > 1
RETURN r1,r2
如果您有多个记录并希望查询 return 具有两个或多个共同点的唯一记录列表,您可以这样做:
MATCH(r1:ROW)-[:HAS_ID]->(i)<-[:HAS_ID]-(r2:ROW)
WHERE id(r1) > id(r2)
WITH [r1,r2] AS nodePair, COLLECT(i) AS is
WHERE SIZE(is) > 1
UNWIND nodePair AS node
RETURN DISTINCT node
我是 Graph DB 和 Neo4j 的新手,需要帮助来查询至少有 2 个公共节点的数据
Graph
从上图中,我需要获取 ROW1 和 ROW2 的详细信息,因为它有 2 个公共节点 ID_B 和 ID_C
Graph 2 with more nodes having common neighbor
对于图 2,我需要将 Row1 、 Row2 和 Row3 的详细信息合并为 Row1 和 Row2 有 ID_B、ID_C 的共同点 Row2 & Row3 有 ID_A ,ID_B C 共同点
这个怎么样。
MATCH(r1:ROW)-[h1:HAS_ID]->(i1:ID)-[p1:PART_OF]->(r1)
MATCH(r2:ROW)-[h2:HAS_ID]->(i2:ID)-[p2:PART_OF]->(r2)
WHERE r1.ID <> r2.ID and i1.ID <> i2.ID
WITH r1, r2, COLLECT(i1) AS i1c, COLLECT(i2) AS i2c
WHERE SIZE(i1c) > 1 AND SIZE(i2c) > 1 AND SIZE(apoc.coll.intersection(i1c, i2c)) > 1
RETURN DISTINCT r1 AS row1, r2 AS row2, apoc.coll.intersection(i1c, i2c) AS ids
我想这样就可以了:
MATCH(r1:ROW)-[:HAS_ID]->(i)<-[:HAS_ID]-(r2:ROW)
WHERE id(r1) > id(r2)
WITH r1,r2, COLLECT(i) AS is
WHERE SIZE(is) > 1
RETURN r1,r2
如果您有多个记录并希望查询 return 具有两个或多个共同点的唯一记录列表,您可以这样做:
MATCH(r1:ROW)-[:HAS_ID]->(i)<-[:HAS_ID]-(r2:ROW)
WHERE id(r1) > id(r2)
WITH [r1,r2] AS nodePair, COLLECT(i) AS is
WHERE SIZE(is) > 1
UNWIND nodePair AS node
RETURN DISTINCT node