在neo4j中使用cypher的双向连通图
我是neo4j和cypher的新手,如果我需要改进我的问题,请告诉我,我会努力让它更有意义 我有一个.csv格式的数据集,共有1000行。我已经在neo4j本地主机中使用cypher导入了该数据集<代码>http://localhost:7474/browser/。这是示例数据集图像 ACC和toacc中的在neo4j中使用cypher的双向连通图,neo4j,cypher,Neo4j,Cypher,我是neo4j和cypher的新手,如果我需要改进我的问题,请告诉我,我会努力让它更有意义 我有一个.csv格式的数据集,共有1000行。我已经在neo4j本地主机中使用cypher导入了该数据集http://localhost:7474/browser/。这是示例数据集图像 ACC和toacc中的列包含重复值。我想绘制连接图,在边和节点上显示fromacc和toacc的时间戳和数量 我已附上图形的图像: 我写的问题是: LOAD CSV WITH HEADERS FROM "file
列包含重复值。我想绘制连接图,在边和节点上显示fromacc
和toacc
的时间戳和数量
我已附上图形的图像:
我写的问题是:
LOAD CSV WITH HEADERS FROM "file:///datanew.csv"As row CREATE (demo:demo
{blockid:toInteger(row.id),blockhas:row.hash,txnid:row.txs,
frmacc:row.frmacc,toacc:row.toacc,amount:toInteger(row.amount)})
Create (p:demo{frm:demo.frmacc})-[r:transferred]- >
(q:demo{toa:demo.toacc}) return r
但我只得到了一个节点连接到另一个节点的重复
有人能帮我得到上图中所需的图表吗。提前谢谢
数据:
如果row.id
是节点之间关系的标识符,那么对于每个行
,您首先需要创建一对节点,然后在它们之间创建关系,然后设置关系属性。使用merge
而不是create
来避免每次创建新节点。例如:
UNWIND [{id:0,hash:"hash1",time_stamp:1231006505,txs:1,from:685031,to:97258,amount:65536},
{id:1,hash:"hash2",time_stamp:1231469665,txs:1,from:761055,to:97260,amount:65536},
{id:2,hash:"hash3",time_stamp:1231469744,txs:1,from:2039922,to:97261,amount:1000000},
{id:3,hash:"hash4",time_stamp:1231470173,txs:1,from:2271509,to:584573,amount:3000000},
{id:4,hash:"hash5",time_stamp:1231470988,txs:1,from:2271510,to:584574,amount:3000000},
{id:5,hash:"hash6",time_stamp:1231471428,txs:1,from:2271511,to:584577,amount:3000000},
{id:6,hash:"hash7",time_stamp:1231471448,txs:2,from:685031,to:16785,amount:1000000},
{id:7,hash:"hash8",time_stamp:1231471478,txs:1,from:685031,to:97258,amount:677888},
{id:8,hash:"hash9",time_stamp:1231471498,txs:2,from:97258,to:685031,amount:567890},
{id:9,hash:"hash0",time_stamp:1231471444,txs:1,from:97258,to:584577,amount:100000}] AS row
MERGE (F:demo {id: row.from})
MERGE (T:demo {id: row.to})
MERGE (F)-[r:transferred {id: row.id}]->(T)
SET r.hash = row.hash,
r.time_stamp = row.time_stamp,
r.txs = row.txs,
r.amout = row.amout
RETURN F, T, r
我对你的数据感到困惑。您有from
和to
列,但是您在哪里创建具有与这些值相关的属性的节点,以便以后可以查找它们?数据导入的标准方法是1。创建所需的节点,包括与稍后导入的关系创建csv对应的ID或属性。然后2。加载关系导入CSV,该CSV具有与先前导入的节点相匹配的字段属性,然后合并它们之间的关系。我认为您确实需要重新阅读文档,包括合并和加载CSV。您能否在加载CSV之前澄清图形中是否存在数据(如果存在,请说明哪些数据)?我也不理解您对:demo节点的用法,您正在使用各种行数据创建一个demo节点,然后还尝试创建具有完全不同数据的新:demo节点。您能回答一个问题吗
UNWIND [{id:0,hash:"hash1",time_stamp:1231006505,txs:1,from:685031,to:97258,amount:65536},
{id:1,hash:"hash2",time_stamp:1231469665,txs:1,from:761055,to:97260,amount:65536},
{id:2,hash:"hash3",time_stamp:1231469744,txs:1,from:2039922,to:97261,amount:1000000},
{id:3,hash:"hash4",time_stamp:1231470173,txs:1,from:2271509,to:584573,amount:3000000},
{id:4,hash:"hash5",time_stamp:1231470988,txs:1,from:2271510,to:584574,amount:3000000},
{id:5,hash:"hash6",time_stamp:1231471428,txs:1,from:2271511,to:584577,amount:3000000},
{id:6,hash:"hash7",time_stamp:1231471448,txs:2,from:685031,to:16785,amount:1000000},
{id:7,hash:"hash8",time_stamp:1231471478,txs:1,from:685031,to:97258,amount:677888},
{id:8,hash:"hash9",time_stamp:1231471498,txs:2,from:97258,to:685031,amount:567890},
{id:9,hash:"hash0",time_stamp:1231471444,txs:1,from:97258,to:584577,amount:100000}] AS row
MERGE (F:demo {id: row.from})
MERGE (T:demo {id: row.to})
MERGE (F)-[r:transferred {id: row.id}]->(T)
SET r.hash = row.hash,
r.time_stamp = row.time_stamp,
r.txs = row.txs,
r.amout = row.amout
RETURN F, T, r