使用ruby驱动程序原子去除mongo集合

时间:2011-02-12 02:59:14

标签: ruby mongodb mongoid

我目前的rails应用程序由mongoid / mongo支持。在每次测试之间我想清除数据库。对此我运行

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

问题是删除集合似乎在后台运行。有时下一个测试将开始,插入一个文档,然后通过删除操作清除它。有没有办法让集合删除阻止?

我知道有一个$ atomic选项,看过mongo / collection的源代码我看不到任何方法可以通过该选项。我怎样才能阻止collcetion删除?

1 个答案:

答案 0 :(得分:1)

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

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