在couchdb中如何做到“不等于”?

问题描述 投票:0回答:1

[伙计,我想知道对文档和/或映射函数建模的最佳方法是什么,该方法允许我进行“不等于”查询。

例如,我的文档是:

1. { name : 'George' }
2. { name : 'Carlin' }

我想触发一个查询,该查询返回名称不等于'John'的每个文档。

  • 注意:我之前没有所有可能的名字。因此,查询中的参数可以是任何随机文本,例如我的示例中的“ John”。
couchdb
1个回答
0
投票

简而言之:没有简单的解决方案。

您有四个选择:

  • 发送多范围查询
  • 使用服务器端列表功能过滤视图响应
  • 使用CouchDB插件
  • 使用芒果查询语言

发送多范围查询

您可以请求具有由startkey和endkey定义的两个范围的视图。您必须选择范围,以便不需要键John

不幸的是,您必须找到某个地方存在的提交请求,并使用它来编译您的CouchDB。它不包含在官方资料中。

使用服务器端列表功能过滤视图响应

不推荐,但是您可以使用列表功能,并在响应中忽略带有键John的行。就像您将使用JavaScript数组一样。

使用CouchDB插件

例如,使用CouchDB-Lucene。 Lucene服务器具有这样的查询功能。

使用“芒果”查询语言

它包含在CouchDB 2.0开发人员预览中。尚未准备好生产,但肯定会包含在稳定版本中。

© www.soinside.com 2019 - 2024. All rights reserved.