假设我在cypher中有一个select查询
MATCH (n:PERSON) RETURN n
这个查询应该给我带来70亿的结果。但由于结果数据非常大,因此无法实现。
或更新查询
MATCH (n :PERSON)
SET n.name = NULL RETURN n
我知道这些查询很荒谬但是为了说明我可以处理真正重要的数据,我给出了上面的例子。
所以现在我想要一些异步工作并向我展示这个过程。有时我们会对查询进行拼写错误或犯错误,这些错误符合我们的要求并且查询会持续数小时。好吧它可以工作,但我们希望看到结果何时到来或过程。
我写了密码,但我读了一些文章,他们说有一些其他方法来访问或更改数据。
所以我应该怎么做。
答案 0 :(得分:0)
如何编写某种批处理作业,从较小的节点集执行更新:
MATCH (n:person)
with n
SKIP ${nodes-to-be-skipped} limit ${maximal-nodes-to-be-match-or-updated}
SET n.name = NULL
RETURN n
如果您知道要更新的节点数,则可以知道%done。 认为更大的 limit 值,需要更多内存,并且需要更少的一次提交(因此需要更多时间)。所以你可以根据自己的需要进行调整。
如果您需要一些批量操作,可以查看批量批量插入 http://neo4j.com/docs/stable/batchinsert-examples.html,这必须更快,但无需事务或索引,因此不会检查一致性。
这取决于您的问题,这可能是一个更好的解决方案。对于我可以为您的帖子解释的内容,我只会使用分页的密码查询来运行。
希望有所帮助。