写这个查询最有效的方法是什么?问题所在。我有一组3500个打篮球的男孩和女孩的名字。我想与他们建立一种关系,因为他们belong_to幼儿,青年,青少年基于他们的年龄组。
我无法在foreach中执行case语句。
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
)
//我有更多像年轻人和青少年这样的群体...但不确定
我收到一个错误: Invalid input ...应为1/L..at CASE语句。我做错了什么?
发布于 2017-04-07 01:58:41
FOREACH
只允许变异操作,但CASE
不是变异操作(并且CASE
也不能包含匹配/变异操作)。除了这些问题之外,我认为您还对UNWIND
的用途感到困惑--您可能指的是COLLECT
。但我认为你根本不需要使用COLLECT
和FOREACH
(因为它们基本上相互抵消)。
这个简单得多的查询可能就是您所需要的:
MATCH (bg:BoysandGirls)
WHERE bg.age < 6
MATCH (t:KidsType {group:"Toddler"})
MERGE (bg)-[:BELONGS_TO]->(t);
它会找到所有小于6的关系,并确保它们与“BELONGS_TO
”KidsType
相关(通过BELONGS_TO
关系类型--请注意前面所需的冒号)。
https://stackoverflow.com/questions/43268190
复制相似问题