【问题标题】:Merging nodes with the same data using Neo4j使用 Neo4j 合并具有相同数据的节点
【发布时间】:2015-06-08 05:00:48
【问题描述】:

这是我想要做的:将用户连接到他们像用户一样观看的视频 -> 社交图或网络类型图中的视频。

我是怎么做到的:

LOAD CSV WITH HEADERS FROM 'asdfjkl;' AS line
CREATE (u {user: line.user }) - [:VIEW] -> (v {video: line.video})
RETURN u, v

CSV 文件有 2 列,其中包含标题用户和视频。用户下方是标识每个用户的编号,视频下方是标识每个视频的编号。一个用户对一个视频。有时,用户名会再次出现在不同视频的列表中。有时视频编号会再次出现,因为它是由不同的用户观看的。

但是,这会返回关系用户在每个关系中观看 1 个视频。因此,每个用户和视频都有多个节点。

我想做的事情:创建更多的网络或图形数据库,以查看所有用户正在观看什么视频以及哪些用户观看了所有视频。为此,用户和视频不能像现在这样以一对一的关系加入。

我该怎么做?提前谢谢!

【问题讨论】:

  • 使用标签:用户和:视频!!

标签: merge neo4j cypher nodes graph-databases


【解决方案1】:

添加到 Luannes 答案。

需要使用标签并提供约束

LOAD CSV WITH HEADERS FROM 'asdfjkl;' AS line
MERGE (u:User {user: line.user })
MERGE (v:Video {video: line.video})
MERGE (u)-[:VIEW]->(v) 
RETURN u, v

您需要在 :User(user) 和 :Video(video)` 上创建一个约束才能使其正常工作。

如果您要导入大量数据(> 100k 行),请同时使用 PERIODIC COMMIT 此外,上面的查询必须急切地提取您的数据以实现分离。

而是将其拆分为三个查询

CREATE CONSTRAINT ON (u:User) ASSERT u.user IS UNIQUE;
CREATE CONSTRAINT ON (v:Video) ASSERT v.video IS UNIQUE;

USING PERIODIC COMMIT 100000
LOAD CSV WITH HEADERS FROM 'asdfjkl;' AS line
WITH distinct line.user as user_data
MERGE (:User {user: user_data });

USING PERIODIC COMMIT 100000
LOAD CSV WITH HEADERS FROM 'asdfjkl;' AS line
WITH distinct line.video as video_data
MERGE (:Video {video: video_data });

USING PERIODIC COMMIT 100000
LOAD CSV WITH HEADERS FROM 'asdfjkl;' AS line
MATCH (u:User {user: line.user })
MATCH (v:Video {video: line.video})
MERGE (u)-[:VIEW]->(v);

确保使用最新版本(Neo4j 2.2.2)。

【讨论】:

    【解决方案2】:

    MERGE 将确保它在缺少节点/关系时创建或使用它们。由于 line.user 和 line.video 似乎相当于主键,这应该很好用

    LOAD CSV WITH HEADERS FROM 'asdfjkl;' AS line
    MERGE (u {user: line.user })
    MERGE (v {video: line.video})
    MERGE (u)-[:VIEW]->(v) 
    RETURN u, v
    

    有关 MERGE 的更多信息:http://neo4j.com/docs/2.2.2/query-merge.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      相关资源
      最近更新 更多