Neo4j BatchInserter 使用 setNodeProperties 设置具有值的数组
Neo4j BatchInserter using setNodeProperties to set an array with values
我正在使用 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']
?
如果你想在 node/relationship 属性 上有多个值,你需要使用数组。所以你在 属性 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);
我正在使用 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']
?
如果你想在 node/relationship 属性 上有多个值,你需要使用数组。所以你在 属性 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);