我有一个Neo4j模型,节点是人和鸟
(jim:Person)-[:LIKES]->(pigeon:Bird)
timestamp
属性,我想删除所有早于某个日期的关系。
我有一个Ruby方法
delete_likes
它接受一个bird ActiveNode并执行这个关系删除,效果很好。在鸟儿身上反复我
Bird.all.each { |bird| delete_likes(bird) }
这是可行的,但速度很慢,因为有很多鸟不喜欢删除,但我还是迭代了它们。我想我也许可以用
Bird
.as(:bird)
.liked_by(:person, :like)
.where('like.timestamp < ?', cutoff)
.pluck(:bird)
.each { |bird| delete_likes(bird) }
换句话说,执行查询以仅查找要应用函数的节点。尽管这段代码在单元测试中产生了相同的结果,但我发现,对于一个真实大小的图形,它使用了我(体面的)笔记本电脑上的所有内存,并使我的Rails服务器崩溃,这让我很难过。