我正在使用 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']
?
答案 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);