如何将值推送到属性数组Cypher-Neo4j

Sar*_*ash 20 arrays neo4j cypher neo4jphp

我是Neo4j的新手,我有两个节点user并且files有关系:contains,这个关系有一个属性id是一个数组,表示为

(:user)-[:contains{id:[12345]}]->(:files)
Run Code Online (Sandbox Code Playgroud)

但是我想id用值填充属性数组111114567 依次使用Cypher查询,我没有找到任何将值推入数组的方法.

在将1111插入财产id之后将会是

(:user)-[:contains{id:[12345,1111]}]->(:files)
Run Code Online (Sandbox Code Playgroud)

在将14567插入财产id之后将会是

(:user)-[:contains{id:[12345,1111,14567]}]->(:files)
Run Code Online (Sandbox Code Playgroud)

我不知道如何顺序地将值填充到属性数组

请帮助,提前致谢

jja*_*erg 40

向数组添加值类似于递增整数或连接字符串,并以相同的方式表示,在您的情况下(让c我们[c:contains {id:[12345]}])

c.id = c.id + 1111             //  [12345,1111]
c.id = c.id + 14567            //  [12345,1111,14567]
Run Code Online (Sandbox Code Playgroud)

要么

c.id = c.id + [1111,14567]     //  [12345,1111,14567]
Run Code Online (Sandbox Code Playgroud)

  • @MichaelCole 使用合并或 CASE (2认同)

Chr*_*yer 8

除了 jjaderberg 的答案,以防其中一个属性为空,这可能会导致可怕的错误:

SET n.id = coalesce(n.id, []) + n.additionalId

合并从左到右通过逗号分隔的列表(在括号内)并跳过作为Null值的变量。所以在这种情况下,如果n.id最初Null是合并将采用第二个参数,即空数组。