结合foreach和case来设置/删除关系属性

时间:2014-03-18 14:19:41

标签: foreach neo4j case cypher

我有两个集合,一个包含节点,另一个包含rels和节点(参见http://console.neo4j.org/?id=ijoqaa

我尝试实现的是更新rel属性,具体取决于一个集合中的节点是否也存在于另一个集合中。下面的代码说明了这一点(希望如此),尽管它不是有效的密码。

FOREACH (iterm in iterms|
    CASE
        WHEN NOT (iterm[1] IN iaterms) THEN
            REMOVE iterms[0].pos,iterms[0].neg
            SET iterm[0].explicit=1
    END
)

问题:在密码中执行此操作的方法是什么?

2 个答案:

答案 0 :(得分:1)

查看控制台上的内容,我认为您的查询非常简单。没有必要使用foreach构造进行迭代。

MATCH (u:user)-[r:RELEVANCE]->()-[ia:ISABOUT]->(t:term)
WITH u, collect(t) AS terms
MATCH (u)-[i:INTEREST]->(t2:term)
WHERE NONE(t IN terms WHERE t = t2)
REMOVE i.pos, i.neg
SET i.explicit = 1

答案 1 :(得分:0)

这有用吗?

MATCH (u:user)-[i:INTEREST]->(t)
WHERE NOT u-[:RELEVANCE]->()-[:ISABOUT]->t
REMOVE i.neg, i.pos
SET i.explicit = 1