我想删除foo
等于 x 的所有文档。看起来像一个非常基本的操作,但我无法弄明白。
我知道如何删除单个文档,但这还不够好 - 我可能不得不一次删除几千个。
如何批量删除CouchDB中的文档?
答案 0 :(得分:9)
我不知道这是否是正确的方法,但是制作一个公开foo
字段的视图,查询您要删除的所有文档的doc._id
视图,并制作针对所有文档的批量更新。所以两个(理想情况下)打电话到沙发。
http://comments.gmane.org/gmane.comp.db.couchdb.user/11222
有类似的方法去做。
中的示例,对要删除的所有文档进行批量更新并更新doc._deleted=true
答案 1 :(得分:2)
我还需要一些东西来处理它,因为当时没有任何东西,我决定自己实现。
你可以找到它here.
由于它对我非常有帮助,为了保护自己免受错误的影响,我在此工具中添加了备份/恢复功能,现在可以在版本0.2上找到
答案 2 :(得分:0)
我尝试了一种删除文档的方法。我首先创建了一个名为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]
答案 3 :(得分:0)
批量删除非常简单:https://wiki.apache.org/couchdb/HTTP_Bulk_Document_API 只需向_all_docs发布一个JSON列表,如下所示:
{"_id": "0", "_rev": "1-62657917", "_deleted": true}