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

问题描述 投票:0回答:4

我想删除

foo
等于 x 的所有文档。看起来像是一个非常基本的操作,但我就是不明白。

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

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

couchdb
4个回答
11
投票

我不知道这是否正确,但创建一个公开

foo
字段的视图,在视图中查询要删除的所有文档的
doc._id
,并对所有文档进行批量更新文件。所以两次(理想情况下)给沙发打电话。

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

有类似的方法。

按照

批量删除文档
中的示例对要删除和更新的所有文档进行批量更新doc._deleted=true


4
投票

批量删除非常简单:
https://docs.couchdb.org/en/stable/api/database/bulk-api.html#updating-documents-in-bulk

只需将 JSON 列表发布到 _all_docs,如下所示:

{"_id": "0", "_rev": "1-62657917", "_deleted": true}

2
投票

我还需要一些东西来处理这个问题,由于当时什么都没有,所以我决定自己实现。

您可以在这里找到它。

更新

因为它对我非常有帮助,并且为了保护自己免受错误的影响,我为这个工具添加了备份/恢复功能,现在可以在0.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]
    
© www.soinside.com 2019 - 2024. All rights reserved.