Foreach中的neo4j案例陈述

Foreach中的neo4j案例陈述,foreach,neo4j,case,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

写这个查询最有效的方法是什么。这个问题。我有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
)
Match(b:男孩和女孩)
作为名称列表展开(b.name)
FOREACH(姓名列表中的全名|
合并(b1:BoysandGirls{name:fullname})
b1.6岁以下的情况
MERGE(t1:KidsType{group:“jackball”})//此组已存在
合并(b1)-[属于]->(t1)
结束
)
//我有更多像青年和青少年这样的团体。。。但不确定
我得到一个错误无效的输入。。。预计为1/L。。在案件陈述中。
我做错了什么?

FOREACH
只允许变异操作,但
CASE
不是变异操作(而且
CASE
也不能包含匹配/变异操作)。除了这些问题之外,我认为您还对
放松
的作用感到困惑——您可能是指
收集
。但我认为您根本不需要使用
COLLECT
FOREACH
(因为它们基本上是相互抵消的)

您可能只需要这个简单得多的查询:

MATCH (bg:BoysandGirls)
WHERE bg.age < 6
MATCH (t:KidsType {group:"Toddler"})
MERGE (bg)-[:BELONGS_TO]->(t);
MATCH(背景:男孩女孩)
其中bg.age<6
匹配(t:KidsType{组:“幼儿”})
合并(bg)-[:属于]->(t);

它会查找所有小于6岁的
男孩和女孩,并确保他们与“蹒跚学步”的
KidsType
FOREACH
只允许变异操作,而
CASE
不是变异操作(而且
CASE
也不能包含匹配/变异操作)。除了这些问题之外,我认为您还不清楚
UNWIND
的作用——您可能指的是
COLLECT
。但我认为您根本不需要使用
COLLECT
FOREACH
(因为它们基本上是相互抵消的)

您可能只需要这个简单得多的查询:

MATCH (bg:BoysandGirls)
WHERE bg.age < 6
MATCH (t:KidsType {group:"Toddler"})
MERGE (bg)-[:BELONGS_TO]->(t);
MATCH(背景:男孩女孩)
其中bg.age<6
匹配(t:KidsType{组:“幼儿”})
合并(bg)-[:属于]->(t);

发现所有<<代码> BooSoad女孩小于6,并确保它们与“蹒跚学步”< KidsType > <代码> > < /P> >点击“另一件事”,如果这是对节点进行分类的唯一目的。(如果:KidsType节点上没有其他属性,并且您不打算出于任何其他原因使用这些节点),则可以在节点上添加其他标签(:蹒跚学步,:青年,:青少年)NeN4J允许多标记节点,并且您可以使用这些标签来对年龄组进行快速查询。@单击另一个要考虑的事情,如果这仅仅是为了对节点进行分类(如果没有其他属性:KyStpe节点,并且您不打算使用这些节点的任何其他原因),您可以在节点上添加其他标签(:蹒跚学步,:青年,:青少年)。Neo4j允许多标签节点,您可以使用这些标签对年龄组进行快速查询。