Nosql CouchDB中的可选复合键范围

Nosql CouchDB中的可选复合键范围,nosql,mapreduce,couchdb,Nosql,Mapreduce,Couchdb,假设mapreduce函数表示对象关系,如: function (doc) { emit([doc.source, doc.target, doc.name], null); } 过滤复合键的正常示例如下: startKey = [ a_source ] endKey = [ a_source, {} ] 它应该提供从源引用的所有对象的列表 现在我想要一个oposite,我不确定这是否可行。我找不到一个先出现变体零件的示例,例如: startKey = [ *simbol_fir

假设mapreduce函数表示对象关系,如:

function (doc) {
    emit([doc.source, doc.target, doc.name], null);
}
过滤复合键的正常示例如下:

startKey = [ a_source ]
endKey   = [ a_source, {} ]
它应该提供从源引用的所有对象的列表

现在我想要一个oposite,我不确定这是否可行。我找不到一个先出现变体零件的示例,例如:

startKey = [ *simbol_first_match* , a_destination ]
endKey   = [ {} , a_destination ]
有可能吗?查询中的复合键(1)过滤和(2)排序操作是否仅限于元素在键中出现的顺序


我知道我可以定义另一个view/mapreduce,但如果可能的话,我希望避免额外的磁盘空间成本。

不,您不能这样做。请参阅我在哪里解释了键如何在CouchDB的视图请求中工作

复合键并没有什么特别的,并没有过滤或任何东西。在内部,您必须想象不再有数组。对我们开发者来说,这只是语法上的糖分。所以
[a,b]-[a,c]
就像
'a_b'-'a_c'
(其中
\uu
是一个特殊的分隔符)一样处理