如何在 couchdb 中做"Not Equals"?



各位,我想知道对允许"不等于"查询的文档和/或映射函数建模的最佳方法是什么。

例如,我的文档是:

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开发人员预览中。尚未准备好生产,但肯定会包含在稳定版本中。

最新更新