Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph Neo4J基于标签值合并两个节点_Graph_Neo4j_Graph Databases_Bigdata - Fatal编程技术网

Graph Neo4J基于标签值合并两个节点

Graph Neo4J基于标签值合并两个节点,graph,neo4j,graph-databases,bigdata,Graph,Neo4j,Graph Databases,Bigdata,我对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 r

我对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;

那么,我需要指定它与什么匹配吗?我的意思是,它如何知道匹配什么?在创建数据集时,必须设置关系,而不必像在问题查询中那样创建foreignKey关系。