24

我想删除所有foo等于x的文档。似乎是一个非常基本的操作,但我就是想不通。

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

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

4

4 回答 4

11

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

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

有类似的方法。

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

于 2012-05-01T20:58:06.537 回答
3

批量删除很容易:https : //wiki.apache.org/couchdb/HTTP_Bulk_Document_API 只需向 _all_docs 发布一个 JSON 列表,如下所示:

{"_id": "0", "_rev": "1-62657917", "_deleted": true}
于 2017-04-03T15:04:12.743 回答
2

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

你可以在这里找到它。

更新

因为它对我非常有帮助,并且为了保护自己免受错误,我在这个工具中添加了一个备份/恢复功能,现在可以在 0.2 版上找到

于 2015-11-26T16:32:22.073 回答
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]
于 2016-06-22T08:30:07.423 回答