Foreach中的neo4j案例陈述

时间:2017-04-07 01:23:47

标签: foreach neo4j case

是编写此查询的最有效方法。问题。我有一套3500名男孩和女孩打篮球的名字。我想与他们建立关系,因为他们属于幼儿,青少年,基于年龄组的青少年。

我无法在foreach中做一个案例陈述。

Match(b:BoysandGirls)
UNWIND (b.name) as namelist
FOREACH (fullname in namelist | 
  MERGE(b1:BoysandGirls {name:fullname})
  CASE WHEN b1.age < 6 THEN
       MERGE(t1:KidsType {group:"Toddler"})  // this groups already exist
       MERGE(b1)-[BELONGS_TO]->(t1)
   END
)

//我有更多的团体,如年轻人和青少年......但不确定 我收到一个错误输入无效...预期1 / L ..在CASE语句中。 我做错了什么?

1 个答案:

答案 0 :(得分:2)

FOREACH仅允许变异操作,但CASE不是变异操作(CASE也不能包含匹配/变异操作)。除了这些问题之外,我认为您对UNWIND所做的事情感到困惑 - 您可能意味着COLLECT。但我认为你根本不需要使用COLLECTFOREACH(因为它们基本上相互抵消)。

这个更简单的查询可能就是您所需要的:

MATCH (bg:BoysandGirls)
WHERE bg.age < 6
MATCH (t:KidsType {group:"Toddler"})
MERGE (bg)-[:BELONGS_TO]->(t);

它找到小于6的所有BoysandGirls并确保它们与(#{1}}关系类型相关 - 请注意所需的前一个冒号)到&#34;幼儿&#34; BELONGS_TO