Neo4j Cypher - 删除给定索引处的数组属性

4

如何使用Cypher删除属性数组中的元素?

例如,假设查询中已经设置了user,我知道您可以使用REMOVE删除属性,例如:

REMOVE user.favouriteColours

但是如果这是一个数组,我该如何删除第一个元素?

REMOVE user.favouriteColours[0]

或者

REMOVE user.favouriteColours.0

无法正常工作,我似乎在Google或文档中看不到任何东西。

谢谢

编辑:

我应该提到,我知道你可以使用user.favouriteColours[0]返回第一个元素,但是删除操作不起作用。

1个回答

3
要删除数组的第一个元素,您可以使用tail函数:
MATCH (user:User {id:123})
SET user.favouriteColors = tail(user.favouriteColors)

如果您需要更通用地通过删除数组的第n个元素来解决此问题;

MATCH (user:User {id:123})
SET user.favouriteColors = user.favouriteColors[0..n] +
    user.favouriteColors[n+1..length(user.favouriteColors)]

2
或者使用 MATCH (user:User {id:123}) SET user.favouriteColors = user.favouriteColors[1..] - Michael Hunger
值得一提的是,数组的索引从1开始(迈克尔的评论中提到了这一点,但可能会被忽视),而不是像许多其他环境一样从0开始。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接