【问题标题】:Grails/MongoDB delete allGrails/MongoDB 删除所有
【发布时间】:2014-07-08 22:32:34
【问题描述】:

我在后端有一个带有 Mongodb 的 Grails 应用程序。我试图在执行函数后立即删除集合的所有记录。这是我在 ResourceController 中尝试过的:

def report()
{
    Resource.where { }.deleteAll() //expected to delete all records from resource collection.
}

它不起作用。

def report()
{
    def p = Resource.findAll()
    p.delete()
}

两种方法都没有奏效。 有什么方法可以在执行方法后立即从集合中删除所有记录?我阅读了文档,它说 GORM 不支持全部删除。如果有人知道任何解决方法,请告诉我。

【问题讨论】:

  • def p = Resource.list() 然后 p*.delete() 可能会起作用。
  • 如果它不支持删除,那么删除的唯一方法就是直接调用底层驱动程序。你在哪里发现它不支持删除? - 它在 MongoDB 中称为 remove ,此页面显示了一个示例:spring.io/guides/gs/accessing-data-gorm-mongodb
  • grails.org/doc/2.3.x/guide/GORM.html 声明:Grails 不提供 deleteAll 方法,因为不鼓励删除数据,并且通常可以通过布尔标志/逻辑来避免。我会尝试这种方法谢谢
  • @JoshuaMoore 很抱歉没有删除 :( Asya 的解决方案确实有效。谢谢。

标签: mongodb grails grails-orm


【解决方案1】:

您应该能够使用以下语法删除所有内容:

Resource.collection.remove(new BasicDBObject());

假设 Resource 是一个集合。

【讨论】:

    【解决方案2】:

    我尝试了许多不同的替代方案,但没有成功,但以下行对我有用:

    db.MEventCampaign.remove(version: 0) //or whatever means "all" for your data
    

    对于新的域定义,我转而使用 newupdateddeleted 的标志。它以这种方式工作就像一种魅力 - 但收藏品正在增长。

    【讨论】:

      猜你喜欢
      • 2015-10-20
      • 1970-01-01
      • 2017-07-03
      • 2016-12-29
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2021-03-28
      • 2011-03-22
      相关资源
      最近更新 更多