1

CouchDB 是否有办法返回不符合特定过滤条件的文档?我正在使用 Python 的 API,并在下面提供了一个示例:

couch['test_db'].view('doc/entrybyname', key=value, include_docs=True)

假设我想要所有与密钥不匹配的文档value......CouchDB 是否提供了一种方法来做到这一点?

现在,我获取所有文档,而不是根据需要过滤它们,这是非常低效的,尤其是随着数据库大小的增长。

提前感谢您的帮助。

布赖恩

4

1 回答 1

2

无法从不在索引中的数据返回,只能索引中返回数据。Mango/Query机制确实允许您执行如下查询:

{
  "selector": {
    "country_code": { "$ne": "UK"}
  }
}

其内容为“查找我的所有 country_code 不等于 'UK' 的文档”,但查询不会由索引提供支持 - 它需要扫描所有文档 - 因此对于大数据不会有效卷。

根据您的用例,您可以创建仅包含您感兴趣的文档的自定义 Map/Reduce 索引,例如

function(doc) {
  if (doc.country_code != 'UK') {
    emit(doc.country_code, null);
  }
}

它为所有不在英国的文件创建一个索引,以国家代码为关键字。

于 2017-09-20T13:22:56.197 回答