apop .create. addlabels从列表中创建动态标签



我使用apop .create. addlabels来创建动态标签,结果非常出乎意料。

MATCH (i)
CALL apoc.create.addLabels(i, FILTER(x IN i.Labels WHERE x <> "e" AND x <> "f")) YIELD node RETURN node
标签属性值为"[a, b, c, d, e, f]"

查询创建的标签看起来像i:["a"、"b"、"c"、"d"、"e"、"f"],而不是添加i:a、i:b、i:c和i:d。(这些带括号的标签不能通过match访问,因为浏览器在语法中不接受括号)

从这样的列表中分配动态标签的正确方法是什么?


我可以像这样删除标签:

MATCH (i:labelinCommon)
WITH i, labels(i) as labels
UNWIND labels as label 
WITH collect(DISTINCT i) AS i, FILTER(x in labels WHERE x <> "labelinCommon") as filtered
CALL apoc.create.removeLabels(i, filtered)
YIELD node
RETURN node, labels(node) AS labels

好吧,我很接近了。似乎我的财产不是一个列表,所以我不得不使用分割(I)。标签,","),它成功了。

最新更新