如何删除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…
等效的方法,链接已断开。这现在在这里的文档中: