拥有此文档结构:
"document":{
"title":"Cheese ",
"start_date": "2010-02-17T15:35:00",
"source": "s_source1"
}
我想创建一个视图,返回2个日期和某个来源之间的所有文档ID:
function (doc, meta) {
emit([doc.start_date,doc.source], null);
}
我尝试使用此范围键获取源码1之间的所有文档" 2014-04-04"和" 2014-04-05":
startkey=["2014-04-04","s_source1"]&endkey=["2014-04-05","s_source1"]
但这不适用于消息来源。它检索日期范围的所有文档,但是检索所有源(s_source1,s_source2,...)。
我想下划线是问题的根源(某些编码问题)?
如何设置我的键范围以仅获取特定日期范围内唯一来源的文档?
答案 0 :(得分:3)
如果您反转复合键,那么您将能够在Couchbase中从左到右进行选择,键排序。
function (doc, meta) {
if(meta.type == "json") {
if(doc.start_date && doc.source) {
emit([doc.source,dateToArray(doc.start_date)],null);
}
}
}
要选择源值为“s_source1”的所有文档,从2010年的日期到现在,您的密钥都是这样的:
Start_Key: ["s_source1",[2010,2,18,15,35,0]]
End_key: ["s_source1",[2014,2,18,15,35,0]]
Couchbase网站上的这个问题对复合键排序有一些很棒的解释,我完全建议你阅读它:http://www.couchbase.com/communities/q-and-a/couchbase-view-composite-keys
另外,这里是官方文档中的信息部分:http://docs.couchbase.com/couchbase-manual-2.0/#selecting-information