如何在CouchDB中删除多个文档?

时间:2012-05-01 20:52:06

标签: couchdb

我想删除foo等于 x 的所有文档。看起来像一个非常基本的操作,但我无法弄明白。

我知道如何删除单个文档,但这还不够好 - 我可能不得不一次删除几千个。

如何批量删除CouchDB中的文档?

4 个答案:

答案 0 :(得分:9)

我不知道这是否是正确的方法,但是制作一个公开foo字段的视图,查询您要删除的所有文档的doc._id视图,并制作针对所有文档的批量更新。所以两个(理想情况下)打电话到沙发。

http://comments.gmane.org/gmane.comp.db.couchdb.user/11222

有类似的方法去做。

按照Bulk deletion of documents

中的示例,对要删除的所有文档进行批量更新并更新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}