假设我有一个文档"schema",其中包括一个show_from
字段,该字段包含作为Unix epoch的时间戳。然后,我创建了一个以show_from
日期为关键字的视图,并且只返回那些在当前时间戳上或之前具有关键字的文档(根据请求)。因此,文档将"被动"出现在视图中,而不是来自任何更新请求。
是否可以使用CouchDB更改API来监视视图状态的更改,或者我是否必须轮询视图以查看更改?(我的猜测是后者,因为API的更改似乎只是由更新触发的,但只是为了确认!)
_changes
提要可以通过多种方式进行过滤。过滤_changes
提要的方法之一是重用视图的映射函数。
GET /[DB]/_changes?filter=_view&view=[DESIGN_DOC]/[VIEW_NAME]
注意:
对于每个_changes
请求,CouchDB都会查看每个更改,并通过filter函数(或者在本例中是视图的map函数)运行它。所有这些都不会缓存用于后续请求(如在mapreduce视图中)。因此,除非变更集很小,否则这可能会对资源造成相当大的负担。
对于一个大型数据集(有很多更改),使用视图进行引导可能很有用,并且只能增量跟踪更改。
其他信息:
使用_changes
,您可以轮询自给定序列点以来的更改、最近的N更改等。您还可以使用长轮询或连续馈送。只要要考虑(和筛选)的变更集很小,就可以使用_changes
。
但是,如果视图本身是按时间顺序排列的,就像你的情况一样,那么使用更改可能毫无意义。只需查询视图。