CouchDB过滤器是否仅限于_changes Feed?

时间:2012-01-29 11:10:32

标签: couchdb

根据指定here,过滤器可与_changes Feed一起使用,如下所示:

curl "$HOST/db/_changes?filter=app/important"

现在我尝试将此模式与标准视图访问一起使用,如下所示:

curl -X GET $HOST/db/_design/live_data/_view/all-comments&filter=live_data/bytag?tag=testing
我也试过了吗?而不是&:

curl -X GET $HOST/db/_design/live_data/_view/all-comments?filter=live_data/bytag?tag=testing

但过滤器没有效果:显示所有文档,甚至是那些不应由过滤器验证的文档。

我使用的过滤器是:

function(doc, req)
{
  for( var i in doc.tags ) {
    if(doc.tags[i] == req.query.tag) {
      return true;
    }
  }
  return false;
}
  • 我在卷曲电话中做错了什么?
  • 是否可以将视图与过滤器一起使用,或过滤器仅限于_changes Feed?我没有看到过与“{1}}
  • 相关的过滤器示例

2 个答案:

答案 0 :(得分:1)

是的,似乎过滤器仅限于_changes请求。 如果要从视图中过滤数据,可以使用“startkey”和“endkey”参数以及可能更复杂的json键和/或降低分组级别来实现所需的结果。

答案 1 :(得分:1)

如果这样做,它将强制CouchDB负责迭代所有 view 的记录并对它们执行过滤器功能。这不是一种好的处理方式,特别是当您可以使用视图和密钥数组(如[date, tag])对文档进行预索引时。

但没有什么会禁止你在自己的后端实现这个过滤器。您只需从CouchDB加载所有视图文档,对它们执行过滤器功能并返回。但那不会很快。