从neo4j中的通话记录生成网络图-新手

从neo4j中的通话记录生成网络图-新手,neo4j,Neo4j,在Neo4J中,我试图将csv文件中的少量通话可视化(下面的假号码示例): 我处理每一列(A,B),因为电话号码是节点,它们之间(A到B)的通话是关系 理想情况下,生成的图形应该显示多个对象之间的关系 节点(例如:值为1的节点将有三个到其他节点的连接,其中一个是值为2的节点2,该节点有另外三个连接,最后值为3的节点将有一个连接,但是分开的) 我正在尝试的代码 USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:blahblahblah.c

在Neo4J中,我试图将csv文件中的少量通话可视化(下面的假号码示例):

我处理每一列(A,B),因为电话号码是节点,它们之间(A到B)的通话是关系

理想情况下,生成的图形应该显示多个对象之间的关系 节点(例如:值为1的节点将有三个到其他节点的连接,其中一个是值为2的节点2,该节点有另外三个连接,最后值为3的节点将有一个连接,但是分开的)

我正在尝试的代码

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:blahblahblah.csv" AS row
CREATE (A:phone {number: row.A})
CREATE (B:phone {number: row.B})
WITH A as a MATCH (a)-[:CALLED*]-(m)
RETURN a,m
很明显,它会产生重复的节点和没有二级箭头的单一关系


我做错了什么?

这应该是最有效的:

create constraint on (p:phone) assert p.number is unique;

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:blahblahblah.csv" AS row
with distinct row.A as value
MERGE (:phone {number: value});

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:blahblahblah.csv" AS row
with distinct row.B as value
MERGE (:phone {number: value});

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:blahblahblah.csv" AS row
MATCH (A:phone {number: row.A})
MATCH (B:phone {number: row.B})
MERGE (A)-[r:CALLED]->(B) 
  ON CREATE SET r.count = 1 
  ON MATCH SET r.count = r.count + 1;
但不确定您想要查询什么? 例如


我想出来了。。。我尝试了这个匹配(a:phone)-[r:CALLED]->(b)返回a,b,sum(r.count)作为calls ORDER BY calls DESC LIMIT 10;它实际上提供了显示A方和B方的结果。我还尝试将(n)-[r:CALLED]->(b)与n,b匹配,将(r)计数为rel\u cnt,其中rel\u cnt>1返回n;要获得超过1个连接的连接…谢谢Michael,
create constraint on (p:phone) assert p.number is unique;

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:blahblahblah.csv" AS row
with distinct row.A as value
MERGE (:phone {number: value});

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:blahblahblah.csv" AS row
with distinct row.B as value
MERGE (:phone {number: value});

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:blahblahblah.csv" AS row
MATCH (A:phone {number: row.A})
MATCH (B:phone {number: row.B})
MERGE (A)-[r:CALLED]->(B) 
  ON CREATE SET r.count = 1 
  ON MATCH SET r.count = r.count + 1;
MATCH (a:phone)-[r:CALLED]->(b)
RETURN a, sum(r.count) as calls
ORDER BY calls DESC LIMIT 10;