【发布时间】:2018-05-14 18:15:02
【问题描述】:
我要做的是编写一个查询 - 我已经将它设为一个 web 服务(在本地机器上工作,所以我将名称和人员作为参数) - 它连接具有相同爱好的人并设置hobbies 作为关系属性作为数组。 我的第一次尝试是;
MERGE (aa:Person{name:$name})
WITH aa, $people as people
FOREACH (person IN people |
MERGE (bb:Person{name:person.name})
MERGE (bb)-[r:SHARESSAMEHOBBY]->(aa)
ON MATCH SET r.hobbies = r.hobbies + person.hobby
ON CREATE SET r.hobbies = [person.hobby])
但是这会导致重复的属性元素,例如 ["swimming","swimming"]
我正在尝试仅设置唯一属性。然后我尝试了以下查询;
MERGE (aa:Person{name:$name})
WITH aa, $people as people FOREACH (person IN people | MERGE (bb:Person{name:person.name}) MERGE (bb)-[r:SHARESSAMEHOBBY]->(aa)
WITH r, COALESCE(r.hobbies, []) + person.hobby AS hobbies
UNWIND hobbies as unwindedHobbies
WITH r, collect(distinct, unwindedHobbies) AS unique
set r.as = unique)
但是现在它给了我语法错误;
errorMessage = "[Neo.ClientError.Statement.SyntaxError] Invalid use of WITH inside FOREACH
感谢任何帮助。
【问题讨论】: