识别与Cypher Neo47具有2个或更多关系的节点

时间:2019-11-29 09:41:52

标签: neo4j cypher

我有200个用户节点和475个位置节点,它们为访问过任何位置的每个用户创建了一个关系(访问)。我想要绘制任何位置有2个或更多访问该位置的用户的所有节点的图。

这是我到目前为止所拥有的。

LOAD CSV WITH HEADERS FROM "http://x.x.x.x/users.csv" AS csvLine
MERGE (u:User {id: toInt(csvLine.user_id), name: toLower(csvLine.name), user_id: csvLine.user_id, user_type:'visitor'})

LOAD CSV WITH HEADERS FROM "http://x.x.x.x/locations.csv" AS csvLine
MERGE (l:Location {id: toInt(csvLine.location_id), name: csvLine.location_name, location_id: csvLine.location_id})

LOAD CSV WITH HEADERS FROM "http://x.x.x.x/visits.csv" AS csvLine
MATCH (l:Location {location_id: csvLine.location_id})
MATCH (u:User {user_id: csvLine.user_id})
MERGE (u)-[:VISITED]->(l)

编辑: 现在,使用以下内容,我可以显示具有2个或更多访问者的所有位置节点,但是不显示用户节点。我必须手动单击其他节点

MATCH ()-[r]->(n)
 WITH n, count(r) as rel_cnt
 WHERE rel_cnt > 1
 RETURN n;

1 个答案:

答案 0 :(得分:0)

带有一些示例数据:

MERGE (u1: User { id: 1 })
MERGE (u2: User { id: 2 })
MERGE (castle: Location { name: 'Castle' })
MERGE (pub: Location { name: 'Pub' })
MERGE (lake: Location { name: 'Lake' })
MERGE (u1)-[:VISITED]->(castle)
MERGE (u1)-[:VISITED]->(pub)
MERGE (u2)-[:VISITED]->(pub)
MERGE (u2)-[:VISITED]->(lake)

enter image description here

然后我们修改查询,以返回连接到位置的用户,其中该位置至少有2个来自用户节点的传入:VISITED边缘

MATCH (u: User)-[r:VISITED]->(l: Location)
 WHERE size((:User)-[:VISITED]->(l)) >= 2
 RETURN u, l;

enter image description here