有一组节点User
,查询返回一个集合(例如两个节点Mary
和Mario
)。
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
答案 0 :(得分: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