假设一个mapreduce函数表示对象关系,如:
function (doc) {
emit([doc.source, doc.target, doc.name], null);
}
过滤复合密钥的常见示例如下:
startKey = [ a_source ]
endKey = [ a_source, {} ]
这应该提供a_source引用的所有对象的列表
现在我想要opsite,我不确定这是否可能。我找不到变体部分优先的例子,比如:
startKey = [ *simbol_first_match* , a_destination ]
endKey = [ {} , a_destination ]
这可能吗?查询中的复合键(1)筛选和(2)排序操作是否仅限于键中元素的出现顺序?
我知道我可以定义另一个视图/mapreduce,但如果可能的话,我想避免额外的磁盘空间成本。
不,你不能那样做。请参阅此处,我在其中解释了键如何在CouchDB的视图请求中工作。
复合键没有什么特别的,没有过滤或任何东西。在内部,您必须想象不再有数组。对我们开发人员来说,这只是语法上的糖。因此,[a,b] - [a,c]
被处理为与'a_b' - 'a_c'
一样(其中_
是一个特殊的分隔符)。