Neo4j BatchInserter使用setNodeProperties设置带有值的数组

时间:2015-02-08 18:07:16

标签: neo4j

我正在使用 BatchInserter 实例来获取和设置节点的属性。 我的数据在某些属性中有多个值。

property value
======== =========
synonym  animal
synonym  mammalian

我想将这些值放在同一节点的同一属性中。

我使用以下代码段来读取和设置值:

String[] values = {"animal", "mammalian"};
for (int i = 0; i < values.length(); i++) {
    Map<String, Object> nodeProps = db.getNodeProperties(0); // Node 0 properties
    nodeProps.put("synonym", values[i]);
    db.setNodeProperties(0, nodeProps);
}

在第一次迭代中,属性synonym获得值animal。在第二次迭代中,属性由值mammalian 重写

我的问题是:如何获取之前的值,添加新值并将属性设置为节点,以便我可以在图表中获得synonym=['animal', 'mammalian']

1 个答案:

答案 0 :(得分:0)

如果要在节点/关系属性上拥有多个值,则需要使用数组。因此,您拥有属性synonyms,其值为String[]

修改现有财产:

String[] values = {"animal", "mammalian"};
Map<String, Object> nodeProps = db.getNodeProperties(0); 
String[] existingValues = nodeProps.get("synonym");
// using org.apache.commons.lang.ArrayUtils from Apache Commons Lang:
String[] amendedValues = ArrayUtils.addAll(existingValues, values); 
nodeProps.put("synonym", amendedValues);
db.setNodeProperties(0, nodeProps);