mongoidには、コレクション内のすべてのドキュメントを検索して「読み取る」と同時に、1つのアトミッククエリでそれらを削除する方法はありますか?
これまで私が使用していたもの:
Model.collection.find().to_json
Model.delete_all
これらの2つの命令の間の収集にデータを追加することで、これを簡単に破ることができます。
これにはもっと簡単な解決策があります。できるよ:
Model.collection.drop
現在のコレクションを削除し、同じ名前で新しいコレクション(もちろん空)を作成します。
たとえば、基になるコレクションの名前を。のような名前に変更できtmp_cf20c448f824763454ada2c4b2434178
ます。次に、すべての新しい書き込みは、古い名前で自動的に作成された新しいコレクションに送られます。急いで心配することなく、すべてのドキュメントを読んでから、その一時コレクションを削除するだけです。
mongo
この種の作業は通常、基盤となるrubyドライバー(mongoid2.xまたはmongoid3.xの場合は10gen)を使用してより簡単に実行できmoped
ます。