改变API实际上做了什么?它是否列出了每个文件的最后修订版+已删除的文件?
或者这样说:
可以使用couchdb的更改通知功能列出与查询匹配的所有文档吗?
例如,如果我有过滤功能:
search = function(doc,req)
{
return (doc.min && doc.max && doc.min < req.query.q && doc.max > req.query.q)
}
Run Code Online (Sandbox Code Playgroud)
我会在这里获得与doc.min <somevalue <doc.max匹配的所有文件吗?
http:// server/database/_changes?filter = doctype/search&q = somevalue
对于我的测试数据库,它似乎是这样,但如果我有一个大型数据库怎么办?
Dom*_*nes 11
每次写入数据库都会被称为a seqnum.(或序列号)这些写入的日志被存储与文档_id,_rev,除上述关于写的其他信息.(参见CouchDB在线书籍的这一部分.)新创建的文档获得下一个seqnum(旧的seqnum + 1).另一方面,文档更新还会附加新seqnum文档,但也会从日志中删除文档的旧文档.如果列出所有订购的文档seqnum,则会得到数据演变的时间表.
调用_changesAPI会检索该列表.并且由于每个修订都保存在它的整体中(不仅仅是更改的增量),因此您可以重建自该特定数据库以来该数据库中已更改的所有内容seqnum.
运行压缩会删除旧的文档修订,但不会影响seqnum或_changes数据.这是因为_changes仅显示文档的最新(实时)修订版.