Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新唯一索引值的Neo4j唯一性_Neo4j_Cypher - Fatal编程技术网

更新唯一索引值的Neo4j唯一性

更新唯一索引值的Neo4j唯一性,neo4j,cypher,Neo4j,Cypher,唯一性=创建或失败 创建新节点时效果非常好,因为如果已经存在重复的索引键/值,它将抛出4xx响应 但是,如果节点已经存在并且索引了,并且索引值需要更新,那么我知道没有办法更新该值,如果新值已经存在,则更新失败。这是因为如果新值已经存在,addnode-to-Index-REST调用不会抛出4xx响应。就我所见,将节点添加到索引甚至不参与索引的唯一性 一种解决方案是删除节点并重新添加它,但这并不容易,因为必须重新创建该节点上的所有其他索引和关系 另一个解决方案是将惟一性参数添加到addnode t

唯一性=创建或失败

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

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

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

另一个解决方案是将惟一性参数添加到addnode to Index REST调用中

这方面还有其他想法吗


谢谢

我碰巧遇到了这个问题,下面是我的解决办法

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

删除所需索引的所有节点索引项 在所需索引上使用CreateOrFail创建一个新节点,除了使用普通属性之外,只需使用一个伪属性,例如DeleteMe=true 将节点添加到所需的索引中,因为如果它达到了这个程度,那么上一步就成功了 更新节点的属性 使用Cypher语句删除虚拟节点Ex:

START n=node:index\u name index\u key={value}其中n.DeleteMe=真删除n


通常,唯一性参数不会更新。你的具体用例是什么?您可以使用rest api索引的put if缺席语义,如果成功,则从索引中删除此节点的旧值。例如,如果用户的电子邮件地址上有唯一的索引,并且用户更新了其地址。在这种情况下,您不希望创建新的用户节点,因为必须重新创建所有现有关系。最好在insert into index调用中使用相同的唯一性参数。这将在成功时返回200,在冲突时返回4xx。如果成功,批处理中的下一个命令将是从索引中删除。就你而言,这不是一个更新。它是索引值的插入和删除,在批处理事务中完成。