通过 CSV 文件的值更新节点的列表 属性

Update a list property of a node by values of a CSV file

我想通过 CSV 文件更新数据库中一个节点的列表 属性。节点的名称是Class,它有两个字符串类型的属性name和字符串列表类型的vector。 CSV 文件有两列 nameCSVvectorCSV,有些行的 nameCSV 列具有相同的值,但 vectorCSV 列具有不同的值。所以我想通过添加 vectorCSV 的值来更新 vector 属性,当它们的对应名称相等时。我在 Cypher 中写了这个查询,但它不起作用:

load  CSV WITH HEADERS FROM "file:///test2.csv" AS  vector
MATCH (c:Class) 
Merge( nv:CSVfile {nameCSV: vector.nameCSV,vectorCSV:vector.vectorCSV})
where c.name = nv.nameCSV
set c.vector = c.vector + nv.vectorCSV

我应该如何更改此查询以更新节点 Class.

的列表 属性 vector

我假设 Class 节点上的 vector 属性 已经是一个数组。

LOAD  CSV WITH HEADERS FROM "file:///test2.csv" AS  vector
MATCH (c:Class {name: vector.nameCSV})
SET c.vector=c.vector + vector.vectorCSV 

这可能会导致重复值。如果你不想重复,你可以使用 apoc.coll.union

LOAD  CSV WITH HEADERS FROM "file:///test2.csv" AS  vector
MATCH (c:Class {name: vector.nameCSV})
SET c.vector=apoc.coll.union(c.vector,[vector.vectorCSV])