如果数组尚未存在,则为数组添加值

时间:2015-07-15 06:47:49

标签: neo4j cypher

如果数组尚未存在,我想为数组添加一个值。 到目前为止,我的代码看起来像这样(注意r.names和{name}都是数组,[1] + [2] = [1,2]):

MERGE (r:resource {hash:{hash}})
ON CREATE SET r.names = {name}
ON MATCH SET r.names = r.names + {name}

但显然如果{name}已经在r.names中,则会再次添加。如果{name}尚未包含r.names,我该如何添加INNER JOIN tags_to_items t2 ON (v.id = t2.tagid AND t2.tagid = 5) INNER JOIN tags_to_items t3 ON (v.id = t3.tagid AND t3.tagid in ('27' ,'69','84' ,'99' ))

1 个答案:

答案 0 :(得分:1)

使用FILTER获取r.names中尚未包含的元素数组并添加它们:

MERGE (r:resource {hash:{hash}})
ON CREATE SET r.names = {new_names}
ON MATCH SET r.names = r.names + FILTER(
    el FOR el in {new_names} IF NOT el IN r.names
)