【发布时间】:2011-01-17 01:32:34
【问题描述】:
我希望以这样一种方式查询我的 CouchDB,文档中的某些字段可以是匹配任何键请求的通配符。
例子:
function(doc) {
emit(doc.some_field, doc);
}
?key=100 将匹配具有 100 的 some_field 和 some_field 值(如 *)的文档。
这可能吗?有没有办法做到这一点?
【问题讨论】:
标签: couchdb
我希望以这样一种方式查询我的 CouchDB,文档中的某些字段可以是匹配任何键请求的通配符。
例子:
function(doc) {
emit(doc.some_field, doc);
}
?key=100 将匹配具有 100 的 some_field 和 some_field 值(如 *)的文档。
这可能吗?有没有办法做到这一点?
【问题讨论】:
标签: couchdb
【讨论】:
{"keys": ["key1", "key2", ...]} 请参阅 wiki.apache.org/couchdb/HTTP_view_API
来自 Couchdb wiki:
CouchDB 实际上存储了 [key,docid] 对作为 btree。这意味着:
- 您始终知道键和值来自哪个文档(它在视图结果中显示为“id”字段)
- 查看具有相同键的行按增加 docid 排序。
所以我不认为用作键的一部分的通配符字段是可能的,因为它们是排序的。假设它们是可能的。然后,如果您尝试从视图中查询键范围,则将返回带有通配符的行以及任何键范围。这意味着它们无处不在。但这是不可能的,因为它们是排序的。即带有通配符的行被放置在一对其他行之间,其中一个具有较大的键,而另一个具有较小的键。
【讨论】: