各位,我想知道对允许"不等于"查询的文档和/或映射函数建模的最佳方法是什么。
例如,我的文档是:
1. { name : 'George' }
2. { name : 'Carlin' }
我想触发一个查询,返回name不等于"John"的所有文档。
- 注意:我手头没有所有可能的名字。因此,查询中的参数可以是任何随机文本,比如我的示例中的"John">
简而言之:没有简单的解决方案。
您有四个选项:
- 发送多范围查询
- 使用服务器端列表函数过滤视图响应
- 使用CouchDB插件
- 使用mango查询语言
发送多范围查询
您可以请求具有startkey和endkey定义的两个范围的视图。您必须选择范围,这样就不会请求密钥John
。
不幸的是,你必须找到某个地方存在的提交请求,并用它编译你的CouchDB。它没有包含在官方来源中。
使用服务器端列表功能过滤视图响应
不建议这样做,但您可以使用列表函数并忽略响应中带有关键字John
的行。这就像您将使用JavaScript数组来完成。
使用CouchDB插件
使用例如couchdb-lucene创建一个附加索引。lucene服务器具有这样的查询功能。
使用"mango"查询语言
它包含在CouchDB 2.0开发人员预览中。尚未准备好生产,但肯定会包含在稳定版本中。