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 Cypher查询相当于选择更新_Neo4j_Cypher_Graph Databases - Fatal编程技术网

Neo4J Cypher查询相当于选择更新

Neo4J Cypher查询相当于选择更新,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我有两个应用程序实例正在运行 每个数据库都有一个在计划作业上运行的密码查询,用于获取数据库的数据并将其发送给服务。问题是每个实例都会获取数据并发送出去,所以服务会接收重复的数据 到目前为止,我所做的是在数据库中匹配/查询数据时,将属性作为标志设置为true 因此,我的问题大致如下: 匹配(n) 其中sentData=false 设置sentData=true 返回 我希望数据会被一个实例用匹配查询中的集合锁定,而另一个实例将无法获取或修改它,但它可以,因此仍然会将重复数据发送到服务 例如,在or

我有两个应用程序实例正在运行

每个数据库都有一个在计划作业上运行的密码查询,用于获取数据库的数据并将其发送给服务。问题是每个实例都会获取数据并发送出去,所以服务会接收重复的数据

到目前为止,我所做的是在数据库中匹配/查询数据时,将属性作为标志设置为true

因此,我的问题大致如下:

匹配(n) 其中sentData=false 设置sentData=true 返回

我希望数据会被一个实例用匹配查询中的集合锁定,而另一个实例将无法获取或修改它,但它可以,因此仍然会将重复数据发送到服务

例如,在oracle中,我会执行“选择更新”,然后一个实例会在选择过程中获取锁,而在执行更新时,一个实例会执行此操作,另一个实例会抛出异常

我只是graph DB的新手,如果术语不完全正确,我深表歉意。
谢谢

您可以使用APOC过程之一以原子方式更新
sentData
属性

例如,即使存在争用条件(两个事务都会看到false
sentData
),此查询也应确保只有一个事务将返回
n

匹配(n:Foo)
哪里不是n.sentData
调用apoc.atomic.update(n,'sentData','true',5)生成oldValue,newValue
其中apoc.convert.toBoolean(新值)而非apoc.convert.toBoolean(旧值)
返回n

< /代码>您可能需要考虑写锁->