我有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;
答案 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)
然后我们修改查询,以返回连接到位置的用户,其中该位置至少有2个来自用户节点的传入:VISITED
边缘
MATCH (u: User)-[r:VISITED]->(l: Location)
WHERE size((:User)-[:VISITED]->(l)) >= 2
RETURN u, l;