【问题标题】:Atomic removal of mongo collection using ruby driver使用 ruby​​ 驱动程序原子删除 mongo 集合
【发布时间】:2011-03-30 15:42:28
【问题描述】:

我当前的 rails 应用程序由 mongoid/mongo 支持。在每次测试之间我想清除数据库。为此我跑了

::Mongoid.database.collections.select { |c| c.name !~ /^system/ }.each { |c| c.remove() }

问题是删除集合似乎在后台运行。有时会开始下一个测试,插入一个文档,然后通过删除操作将其清除。有什么方法可以阻止收集删除?

我知道有一个 $atomic 选项,查看了 mongo/collection 的源代码后,我看不到任何传递该选项的方法。我怎样才能阻止收集删除?

【问题讨论】:

    标签: ruby mongodb mongoid


    【解决方案1】:

    当您调用 remove 时,Mongoid 只是将您作为参数发送的内容传递给底层的 mongo ruby​​ 驱动程序。从 API 文档http://api.mongodb.org/ruby/1.2.1/Mongo/Collection.html#remove-instance_methodsafe=>true 阻塞直到完成。所以:

    ::Mongoid.database.collections.select { |c| c.name !~ /^system/ }.each { |c| c.remove(:safe => true) }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 2016-10-09
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      相关资源
      最近更新 更多