Grails gorm mongodb删除大块

时间:2015-07-29 19:25:07

标签: grails gorm gorm-mongodb

如何使用gorm从块中删除MongoDB中的文档? 由于findAll返回的文档数量很大,因此findAll后跟删除将无法正常工作。它导致堆问题。

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

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

2 个答案:

答案 0 :(得分:0)

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

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

我的要求是删除所有比给定数据更旧的文档。下面的代码帮助我实现了我想要的目标:

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

答案 1 :(得分:0)

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

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

有关详细信息,请参阅user guide