繁体   English   中英

在 Neo4j Cypher 中创建同类节点的关系

[英]Creating relationships of nodes of the same kind in Neo4j Cypher

这是我使用的数据帧的一部分:

A_PERSON, B_PERSON, MESSAGE_TIME
SARAH, RON, 13:20 pm
RON, TIM, 13:33 pm
TIM, MARTHA, 13:45 pm
RON, LARRY, 13:35 pm
LARRY, JIM, 13:38 pm

我想创建一个图表来显示这些人之间发送的所有消息,箭头应该显示消息的时间。

我试过这样的事情:

load csv with headers 
from "file:\\df.csv" as row 
create(m: Message {a_person: row.A_PERSON, b_person: row.B_PERSON, time: row.MESSAGE_TIME})

这样以后我就可以匹配它们,但这似乎不可能。 由于第二个和第三个标签,结果中有一些 A_PERSON 重复。 所以我不明白如何创建独特的节点并将它们相互连接。 有可能吗? 如果是,那又如何?

关键是使用MERGE子句。 MERGE每个人,然后MERGE两个人之间的关系。

如果他们不存在, MERGE将创建该人,如果他们存在,则MATCH他们。

LOAD CSV WITH HEADERS 
FROM "file:\\df.csv" AS row 
MERGE (a_person:Person {name: row.A_PERSON})
MERGE (b_person:Person {name: row.B_PERSON})
MERGE (a_person)-[:SENT_MESSAGE {time: row.MESSAGE_TIME}]->(b_person)

或者,如果您将 message 设置为节点,则可以执行以下操作。

LOAD CSV WITH HEADERS 
FROM "file:\\df.csv" AS row 
MERGE (a_person:Person {name: row.A_PERSON})
MERGE (b_person:Person {name: row.B_PERSON})
MERGE (a_person)-[:SENT_MESSAGE]->(:Message {time: row.MESSAGE_TIME})-[:TO]->(b_person)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM