1

唯一性=create_or_fail

创建新节点时效果很好,因为如果已经存在重复的索引键/值,它会抛出 4xx 响应。

但是,如果节点已经存在并被索引并且需要更新索引值,那么(我知道)没有办法更新值并且如果新值已经存在则失败。这是因为如果新值已经存在,那么 Add Node to Index REST 调用不会引发 4xx 响应。据我所见,将节点添加到索引甚至不参与索引的唯一性。

一种解决方案是删除节点并重新添加它,但这并不容易,因为必须重新创建该节点上的所有其他索引和关系。

另一种解决方案是将唯一性参数添加到将节点添加到索引 REST 调用 http://docs.neo4j.org/chunked/1.9.M05/rest-api-indexes.html#rest-api-add-node-to -指数

对此有何其他想法?

谢谢

4

1 回答 1

0

我遇到了这个问题,这就是我想出的解决方法。

在更新期间,在 REST 批处理中执行以下操作:

  1. 删除所需索引的所有节点索引条目
  2. 在所需索引上使用 CreateOrFail 创建一个新节点,除了使用普通属性而不是使用虚拟属性,例如DeleteMe=true
  3. 将节点添加到所需的索引,因为如果它到此为止,则上一步成功
  4. 更新节点的属性
  5. 使用 Cypher 语句删除虚拟节点 Ex:

    START n=node:index_name(index_key={value}) WHERE (n.DeleteMe!)=true DELETE n

于 2013-08-21T19:33:09.233 回答