がxfoo
に等しいすべてのドキュメントを削除したい。かなり基本的な操作のように思えますが、理解できません。
個々のドキュメントを削除する方法は知っていますが、それだけでは十分ではありません。一度に数千のドキュメントを削除する必要があるかもしれません。
CouchDB でドキュメントを一括削除するにはどうすればよいですか?
がxfoo
に等しいすべてのドキュメントを削除したい。かなり基本的な操作のように思えますが、理解できません。
個々のドキュメントを削除する方法は知っていますが、それだけでは十分ではありません。一度に数千のドキュメントを削除する必要があるかもしれません。
CouchDB でドキュメントを一括削除するにはどうすればよいですか?
それが正しい方法かどうかはわかりませんが、foo
フィールドを公開するビューをdoc._id
作成し、削除するすべてのドキュメントの s についてビューをクエリし、すべてのドキュメントに対して一括更新を行います。そのため、(理想的には) 2 回の呼び出しでソファを呼び出します。
http://comments.gmane.org/gmane.comp.db.couchdb.user/11222
同様の方法があります。
ドキュメントの一括削除のdoc._deleted=true
例に従って、削除および更新するすべてのドキュメントに対して一括更新を実行します。
それを処理するものも必要で、当時は何もなかったので、独自の実装を作成することにしました。
ここで見つけることができます。
これは私にとって非常に役に立ち、間違いから身を守るために、このツールにバックアップ/復元機能を追加しました。この機能は、バージョン 0.2 で利用できるようになりました。
ドキュメントを削除するために、やや長い方法を試しました。最初に、削除したいドキュメントを呼び出す map_fun というビューを作成しました。次に、ビューを繰り返し処理し、すべてのドキュメントのキーを保存し、del db['_id'] を使用してそれらを削除しました
map_fun = function(doc){
if (doc.doc_type == 'classic'){
emit(doc._id, doc)
}}
deldoclist = []
for row in db.query(map_fun):
deldoclist.append(row.key)
for item in deldoclist:
del db[item]