Neo4J 根据标签值合并两个节点
Neo4J Merge two nodes based on label value
我对 neo4j 比较陌生,在合并我的节点时遇到了一些问题。也许我的概念有误,但这是问题陈述和我尝试做的事情..
问题陈述: 通过根据 属性.
的值为每个用户找到匹配项来创建图表
Person-> id: user1, movie: lord of the rings
Person-> id: user1, movie: alice in wonderland
Person-> id: user2, movie: star wars
Movie-> name: lord of the rings, genre: Fantasy
Movie-> name: alice in wonderland, genre: Fantasy
Movie-> name: star wars, genre: Fantasy
我想要的输出是:
user1 -> lord of the rings
-> alice in wonderland
user2 -> star wars
相反,我得到的是:
user1 -> lord of the rings
user1 -> alice in wonderland
user2 -> star wars
这是我目前尝试过的方法:
MATCH (a:user),(b:movie)
where a.movieName = b.name
MERGE (a)-[r:matches]->(b)
RETURN r
理想情况下,我希望能够创建一个图表,在其中我可以将用户与不同电影的所有连接视为一对多连接。我希望这是清楚的!关于我做错了什么的任何想法。
您在这里所做的是一种 SQL 逻辑,这不是 Neo4j 的使用方式:)。我认为您必须更改数据模型:
实际上,您有:
(u:User(name:"", movie:""})
(m:Movie{name:""})
这里的问题是,你有一个 n:1(或 1:n?不知道是哪个)关系,这意味着一个用户只能拥有一部电影。
Neo4j 是一个图形数据库,这意味着您可以简单地执行以下操作:
(u:User{properties...})-[:MATCHES]->(m:Movie{properties...})
然后您将能够使用此请求为用户查找每部电影:
MATCH (:User{properties...})-[:MATCHES]->(m:Movie) return m;
我对 neo4j 比较陌生,在合并我的节点时遇到了一些问题。也许我的概念有误,但这是问题陈述和我尝试做的事情..
问题陈述: 通过根据 属性.
的值为每个用户找到匹配项来创建图表Person-> id: user1, movie: lord of the rings
Person-> id: user1, movie: alice in wonderland
Person-> id: user2, movie: star wars
Movie-> name: lord of the rings, genre: Fantasy
Movie-> name: alice in wonderland, genre: Fantasy
Movie-> name: star wars, genre: Fantasy
我想要的输出是:
user1 -> lord of the rings
-> alice in wonderland
user2 -> star wars
相反,我得到的是:
user1 -> lord of the rings
user1 -> alice in wonderland
user2 -> star wars
这是我目前尝试过的方法:
MATCH (a:user),(b:movie)
where a.movieName = b.name
MERGE (a)-[r:matches]->(b)
RETURN r
理想情况下,我希望能够创建一个图表,在其中我可以将用户与不同电影的所有连接视为一对多连接。我希望这是清楚的!关于我做错了什么的任何想法。
您在这里所做的是一种 SQL 逻辑,这不是 Neo4j 的使用方式:)。我认为您必须更改数据模型:
实际上,您有:
(u:User(name:"", movie:""})
(m:Movie{name:""})
这里的问题是,你有一个 n:1(或 1:n?不知道是哪个)关系,这意味着一个用户只能拥有一部电影。
Neo4j 是一个图形数据库,这意味着您可以简单地执行以下操作:
(u:User{properties...})-[:MATCHES]->(m:Movie{properties...})
然后您将能够使用此请求为用户查找每部电影:
MATCH (:User{properties...})-[:MATCHES]->(m:Movie) return m;