Grails gorm mongodb 分块删除

Grails gorm mongodb delete in chunks

如何使用 gorm 从 MongoDB 中批量删除文档? findAll 后跟 delete 是行不通的,因为 findAll 返回的文档数量巨大。它会导致堆问题。

我希望使用域 class 发送本机 mongo db 命令。 我不想将所有域对象提取到 JVM 堆中,然后迭代删除它们。相反,我想将删除的标准发送到 mongo,并让它处理删除。

关于使用低级查询批量删除的任何指示?或任何其他方式?

以下方法有助于将删除命令发送到 MongoDB。

MyDomainClass.collection.remove(new BasicDBObject("property", valueOrCondition))

我的要求是删除所有早于给定数据的文档。下面的代码帮助我实现了我想要的:

MyDomainClass.collection.remove(new BasicDBObject("createdDate", new BasicDBObject('$lt', createdDateCutOff)))

使用 mongo-gorm/gmongo 的 low-level API:

SomeDomain.collection.remove( [ date:[ $lt:now ] ] )

详见user guide