在Rails中使用Mongomapper删除记录

时间:2012-06-06 17:56:19

标签: ruby-on-rails mongodb mongomapper

我使用Mongomapper在Rails中享受着令人惊叹的MongoDB,但我在删除记录方面遇到了问题。

删除记录以及删除整个文档的可接受方式是什么?

我尝试使用Stuff.destroy_all但它似乎使网络服务器崩溃。

3 个答案:

答案 0 :(得分:4)

抱歉,没有详细记录。我正在为此开启一个问题。

请参阅class methodsinstance methods

my_doc.destroy    # fires callbacks
my_doc.delete     # no callbacks, just removes it from the database
MyDoc.destroy_all # fires callbacks, shouldn't crash...!
MyDoc.delete_all  # no callbacks
MyDoc.destroy("b965105ea203368234636df2", "368234636df21c64f05358a4")
MyDoc.delete("b965105ea203368234636df2", "368234636df21c64f05358a4")

答案 1 :(得分:1)

是的,我偶然发现并且在MongoMapper中删除了很多东西。这种技术似乎也有效:

MessageLog.destroy_all(:created_at.gte => @start_time)

我花了一段时间才弄明白为什么delete_alldestroy_all快得多:{p}

答案 2 :(得分:0)

并且delete_alldestroy_all也可以作为Plucky方法使用,因此您可以执行以下操作:

MyDoc.where(status: 'unneeded').delete_all
MyDoc.where(status: 'unneeded').destroy_all

取决于您是想避免回调(delete_all)还是执行它们(destroy_all)。