【发布时间】:2015-10-28 04:48:10
【问题描述】:
我试图弄清楚如何使用密码查询有效地添加新节点。我正在尝试合并多个数据源,因此需要寻找可能的匹配数据。我有 3 个可能存在或不存在的数据点。如果任何数据点匹配,我想重用现有节点。如果没有一个数据点匹配,我想创建一个新节点。
如果节点不存在则创建节点是 MERGE 的确切用例。 MERGE 不允许 WHERE 子句,否则这将非常简单。由于我正在匹配数据点-a 或数据点-b 或数据点-c,我无法弄清楚如何使用 MERGE,因为它是所有属性。
这是无效的,但应该表达我的目标:
MERGE (n:TYPE)
WHERE n.propertyA = "A" OR n.propertyB = "B" OR n.propertyC = "C"
ON MATCH SET n.propertyA = "A", n.propertyB = "B", n.propertyC = "C"
ON CREATE SET n.timestamp = <now>, n.propertyA = "A", n.propertyB = "B", n.propertyC = "C"
RETURN n;
我在想我也许可以使用批处理或事务。由于我仍在学习 Cypher,因此我将不胜感激任何见解或指导。
【问题讨论】:
-
试图完成同样的事情。你找到你喜欢的解决方案了吗?