【发布时间】:2012-09-03 10:48:45
【问题描述】:
在 mongoid 中有什么方法可以查找和“读取”集合中的所有文档,同时在一个原子查询中删除它们?
到目前为止我正在使用:
Model.collection.find().to_json
Model.delete_all
这可以通过在这两条指令之间添加更多数据来轻松破解。
【问题讨论】:
在 mongoid 中有什么方法可以查找和“读取”集合中的所有文档,同时在一个原子查询中删除它们?
到目前为止我正在使用:
Model.collection.find().to_json
Model.delete_all
这可以通过在这两条指令之间添加更多数据来轻松破解。
【问题讨论】:
有一个更简单的解决方案。你可以这样做:
Model.collection.drop
它将删除当前集合,并创建一个具有相同名称的新集合(当然是空的)。
【讨论】:
例如,您可以将基础集合重命名为tmp_cf20c448f824763454ada2c4b2434178 之类的名称。然后所有新的写入都将转到一个新的、自动创建的旧名称集合中,您可以毫不费力地阅读所有文档,然后简单地删除该临时集合。
使用底层 ruby 驱动程序(10gen 的 mongo 用于 mongoid 2.x 或 moped 用于 mongoid 3.x)通常更容易完成此类工作。
【讨论】: