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

如何删除CouchDB中的多个文档?,couchdb,Couchdb,我想删除foo等于x的所有文档。看起来是个很基本的操作,但我就是搞不懂 我知道如何删除单个文档,但这还不够好——我可能一次要删除几千个文档 如何在CouchDB中批量删除文档?我不知道这是否正确,但创建一个显示foo字段的视图,查询要删除的所有文档的doc.\u ids视图,并对所有文档进行批量更新。所以给沙发打两个(理想的)电话 也有类似的方法 对所有要删除的文档进行批量更新并更新doc.\u deleted=true按照中的示例,我还需要一些东西来处理这个问题,因为当时没有任何东西,所以我

我想删除
foo
等于x的所有文档。看起来是个很基本的操作,但我就是搞不懂

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


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

我不知道这是否正确,但创建一个显示
foo
字段的视图,查询要删除的所有文档的
doc.\u id
s视图,并对所有文档进行批量更新。所以给沙发打两个(理想的)电话

也有类似的方法


对所有要删除的文档进行批量更新并更新
doc.\u deleted=true
按照中的示例,我还需要一些东西来处理这个问题,因为当时没有任何东西,所以我决定自己实现

你可以找到它

更新
由于它对我很有帮助,并且为了保护自己不出错,我在这个工具中添加了一个备份/恢复功能,现在可以在0.2版上找到它。我尝试了一种较长的方法来删除文档。我首先创建了一个名为map_fun的视图,它调用了我想要删除的文档。然后,我遍历视图,存储所有文档的键,并使用deldb['''u 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]

批量删除非常简单: 只需向_all_docs发布一个JSON列表,如下所示:

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

好的,根据你的链接,以及我在此期间读到的其他几篇文章,似乎一步批量删除(或更新)是不可能的。有些自称为“数据库”的东西没有这个功能,这似乎相当令人震惊,但至少现在我知道了获得我想要的东西的最低效率的方法。谢谢你提供的信息,这是真的。“数据库”的定义正在改变。人们过去称memcache为“缓存”,现在它被认为是“内存中的数据库”。我同意这令人不安。但另一方面,旧的定义实际上意味着“SQL数据库”,这也不正确。真的很遗憾,没有更方便的方法……:'(@MikeBaranczak如果您阅读过CouchDB的概念基础知识,您不会感到震惊,其中之一是每个文档只能保证一致性(没有事务)。同意,这是一个限制,但使CouchDB成为强大而简单的数据库。如果您了解这些概念,您将能够以一种不存在事务的方式设计您的应用程序。不,这并不能回答问题。我想要类似于从t中删除foo=10的内容。使用批量操作,我仍然需要进行两次调用,而不是一次。是的,你当然会。同样,没有与
UPDATE…WHERE…
等效的方法,也没有与
DELETE…WHERE…
等效的方法,链接已断开。这现在在这里的文档中: