Neo4j - 用单个值替换字符串列表属性中的多个值

问题描述 投票:0回答:1

我有一个带有列表属性的节点。该列表可以包含多个相似的值:

[“某物一”,“某物二”,“另一属性”,“某物三”]

我的目标是找到属性中具有一个或多个“某物...”值的所有节点,并将所有“某物...”属性替换为单个属性值“某物”。

[“某物”,“另一个财产”]

据我所知,有两个问题:

  1. 找到列表属性包含“something”的所有节点。
  2. 将“某事...”的所有单个或多个实例替换为单个“某事”值。
neo4j properties contains
1个回答
1
投票

这个逻辑可能对你有用:

MATCH (n:Foo)
WHERE ANY(x IN n.list WHERE x STARTS WITH 'something')
SET n.list =
  REDUCE(s = [], t IN n.list | CASE WHEN t STARTS WITH 'something' THEN s ELSE s + t END ) +
  'something'

它使用 REDUCE 函数创建一个不包含任何“something...”元素的列表,然后将“something”附加到其中。

© www.soinside.com 2019 - 2024. All rights reserved.