如何在 couchdb 中执行 "Not Equals"?
How to do "Not Equals" in couchdb?
伙计们,我想知道什么是建模文档 and/or 允许我 "Not Equals" 查询的地图函数的最佳方法。
比如我的文档是:
1. { name : 'George' }
2. { name : 'Carlin' }
我想触发 returns 每个名称不等于 'John' 的文档的查询。
- 注意:我没有事先准备好所有可能的名称。因此,查询中的参数可以是任何随机文本,例如我示例中的 'John'。
简而言之:没有简单的解决方案。
您有四个选择:
- 发送多范围查询
- 使用服务器端列表函数过滤视图响应
- 使用 CouchDB 插件
- 使用芒果查询语言
发送多范围查询
您可以请求具有由startkey 和endkey 定义的两个范围的视图。您必须选择范围,以便不请求键 John
。
不幸的是,您必须找到某处存在的提交请求并使用它编译您的 CouchDB。它不包含在官方来源中。
使用服务器端列表函数过滤视图响应
不推荐,但您可以使用列表函数并在响应中忽略带有键 John
的行。就像您将使用 JavaScript 数组一样。
使用 CouchDB 插件
创建一个额外的索引,例如couchdb-lucene。 lucene server 有这样的查询能力。
使用"mango"查询语言
它包含在 CouchDB 2.0 开发人员预览版中。尚未准备好生产,但肯定会包含在稳定版本中。
伙计们,我想知道什么是建模文档 and/or 允许我 "Not Equals" 查询的地图函数的最佳方法。
比如我的文档是:
1. { name : 'George' }
2. { name : 'Carlin' }
我想触发 returns 每个名称不等于 'John' 的文档的查询。
- 注意:我没有事先准备好所有可能的名称。因此,查询中的参数可以是任何随机文本,例如我示例中的 'John'。
简而言之:没有简单的解决方案。
您有四个选择:
- 发送多范围查询
- 使用服务器端列表函数过滤视图响应
- 使用 CouchDB 插件
- 使用芒果查询语言
发送多范围查询
您可以请求具有由startkey 和endkey 定义的两个范围的视图。您必须选择范围,以便不请求键 John
。
不幸的是,您必须找到某处存在的提交请求并使用它编译您的 CouchDB。它不包含在官方来源中。
使用服务器端列表函数过滤视图响应
不推荐,但您可以使用列表函数并在响应中忽略带有键 John
的行。就像您将使用 JavaScript 数组一样。
使用 CouchDB 插件
创建一个额外的索引,例如couchdb-lucene。 lucene server 有这样的查询能力。
使用"mango"查询语言
它包含在 CouchDB 2.0 开发人员预览版中。尚未准备好生产,但肯定会包含在稳定版本中。