CouchDB中的批量检索?
我最近开始考虑用CouchDB来存储我在Python中处理的一大堆字典。对我来说,这个“大”是指大约有2万个元素。
我发现update()
这个方法在一次HTTP请求中能很快把我的整个列表推送进去。大约只需要3秒钟,这对我来说非常合适。
我还需要在另一个脚本中获取这个数据库的全部内容,并把它存储到一个字典列表里。这是与上面操作相反的过程。可惜的是,我找到的唯一方法是通过
# db is the database opened following a couchdb.Server() call
mylist = list()
for id in db:
mylist.append(db[id])
这个方法需要10分钟,因为循环中的每个元素都要发一次请求。
- 有没有类似于
update()
的方法,可以一次性获取数据库的内容? - 或者我应该用其他更有效的方法来处理获取的部分?
1 个回答
0
获取所有文档最简单的方法就是向 _all_docs
发送请求,并且加上 include_docs=true
。
_all_docs
会返回数据库中所有文档的基本信息,比如文档的ID和版本号。而 include_docs
则会让完整的文档内容也包含在返回的结果中。
/mydatabase/_all_docs?include_docs=true
如果你需要的结果比返回整个文档更细致一些,比如只想要每个文档的一个简单值,那么你就需要了解一下 视图。