CouchDB 是否有办法返回不符合特定过滤条件的文档?我正在使用 Python 的 API,并在下面提供了一个示例:
couch['test_db'].view('doc/entrybyname', key=value, include_docs=True)
假设我想要所有与密钥不匹配的文档value......CouchDB 是否提供了一种方法来做到这一点?
现在,我获取所有文档,而不是根据需要过滤它们,这是非常低效的,尤其是随着数据库大小的增长。
提前感谢您的帮助。
布赖恩
CouchDB 是否有办法返回不符合特定过滤条件的文档?我正在使用 Python 的 API,并在下面提供了一个示例:
couch['test_db'].view('doc/entrybyname', key=value, include_docs=True)
假设我想要所有与密钥不匹配的文档value......CouchDB 是否提供了一种方法来做到这一点?
现在,我获取所有文档,而不是根据需要过滤它们,这是非常低效的,尤其是随着数据库大小的增长。
提前感谢您的帮助。
布赖恩
无法从不在索引中的数据返回,只能从索引中返回数据。Mango/Query机制确实允许您执行如下查询:
{
"selector": {
"country_code": { "$ne": "UK"}
}
}
其内容为“查找我的所有 country_code 不等于 'UK' 的文档”,但查询不会由索引提供支持 - 它需要扫描所有文档 - 因此对于大数据不会有效卷。
根据您的用例,您可以创建仅包含您感兴趣的文档的自定义 Map/Reduce 索引,例如
function(doc) {
if (doc.country_code != 'UK') {
emit(doc.country_code, null);
}
}
它为所有不在英国的文件创建一个索引,以国家代码为关键字。