我目前正在使用 Neo 来创建监控 API(目前使用 1.4.2 Java 驱动程序)。其中一部分涉及创建我自己的 MonitorNode/MonitorEdge 图(这些是我自己的类),然后将它们与我的 Neo 实例同步。我的 MonitorNode 有一个我想要同步的属性的字符串/对象映射(加上我用作主查找键的 vertexId 和一个类型)。我可以制作一个 MERGE/SET 密码命令,该命令几乎完全符合我的需要,但由于我已经有一个字符串/对象映射,是否有一种更简洁的方式来表达“这是我想要设置的属性”而无需为每个属性指定一个 SET 命令?
通过 Java 驱动程序更新数据的示例相对较少(我发现 - 请随时链接任何资源),我觉得我可能在这里遗漏了一些简单的东西。
private void syncNode(MonitorNode node) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("vertexId", node.getVertexId());
StringBuilder builder = new StringBuilder();
builder.append("MERGE(n:" + node.getType() + " {vertexId: {vertexId}})");
if (node.getProperties() != null) {
for (Entry<String, Object> e : node.getProperties().entrySet()) {
builder.append(" SET n." + e.getKey() + " = {" + e.getKey() + "}");
params.put(e.getKey(), e.getValue());
}
}
Session session = driver.session();
session.run(builder.toString(), params);
}
谢谢,
戴夫