2014-05-21 39 views
0

有一组节点User,查询返回集合(例如,两个节点MaryMario)。如何在集合中的元素之间创建关系

match (u:User) 
where u.name =~ 'M.*' 
return u 

我该如何去建立他们之间的关系。我不知道这是否可能。我没有做任何特别的事情,这只是一个学习练习。

match (u:User) 
where u.name =~ 'M.*' 
foreach (n in nodes(u) | create (n)-[:knows]-> (n+1)) #=> I am stuck here 

回答

2

您可以只匹配用户两次,然后使用这些对或在foreach中使用范围函数。

看到这个博客帖子:http://jexp.de/blog/2014/03/quickly-create-a-100k-neo4j-graph-data-model-with-cypher-only/

foreach (name in ["Martin", "Max","Marius"] | create (:User {name:name})) 


MATCH (u:User) 
WHERE u.name =~ 'M.*' 
WITH collect(u) as users 
foreach (i in range(1,length(users)-1) | 
    foreach (u1 in [users[i-1]] | foreach (u2 in [users[i]] | 
    create (u1)-[:knows]-> (u2))) 
) 

看到这个图的依据,它是如何工作的:http://gist.neo4j.org/?b01ae5a9a863e126c116

+0

是否有英文版本的书'的Neo4j 2.0'的任何计划。尝试谷歌翻译德语版本,但没有很好地工作。 – Bala