如何在 Neo4j 中根据日期顺序创建关系
Posted
技术标签:
【中文标题】如何在 Neo4j 中根据日期顺序创建关系【英文标题】:How to create relationships in according to date order in Neo4j 【发布时间】:2021-12-26 22:15:56 【问题描述】:我有很多节点和零关系。如何创建按照日期顺序加入同一个人的关系? (图片代表我想得到的情况) See Image
【问题讨论】:
请不要大喊大叫。请避免谢谢,请等。请use text, not images/links, for text--including tables & ERDs。转述或引用其他文本。只提供您需要的东西并将其与您的问题联系起来。仅将图像用于无法表达为文本或增强文本的内容。在图片中包含图例/键和说明。 【参考方案1】:如果你有 apoc,这就是我的方法。
MATCH (p:Person)
WITH p order by p.date
WITH p.name as personName, collect(p) as personList
WITH apoc.coll.pairsMin(personList) as pairs
UNWIND pairs as pair
WITH pair[0] as p0, pair[1] as p1
MERGE (p0)-[:SAME_PERSON]->(p1)
【讨论】:
遗憾的是,这种方法无法识别所有相同的人。它似乎有效,但有些节点没有连接到任何人,并且还有不同的连接组件表示同一个人。在我的数据集中,我知道一个人是通过名字和姓氏来识别的。我只是在条件中将 p.lastname 添加到 personName 旁边。我尝试使用由 1000 行组成的 CSV 文件 如何判断不同的连通分量表示同一个人? 这是正确的做法。我想知道您是否在 CSV 中有一些额外的空格给您带来麻烦。用类似这样的东西替换查询中的第三行吗?WITH trim(p.lastname) as lastname, trim(p.firstname) as firstname, collect(p) as personList
还是有同样的问题。它适用于 95% 的数据集,但存在一些异常值。不过我想我可以给你正确的答案
祝你好运解决最后 5%。我认为你在正确的轨道上。以上是关于如何在 Neo4j 中根据日期顺序创建关系的主要内容,如果未能解决你的问题,请参考以下文章