[英]Composite views in couchbase
我是Couchbase的新手,正在努力获取复合索引来执行我想要的操作。 用例是这样的:
我已经创建了一个Couchbase视图,如下所示:
function (doc, meta) {
var time_array;
if (doc.doc_type === "enum") {
if (doc.last_updated) {
time_array = doc.last_updated.split(/[- :]/);
} else {
time_array = [0,0,0,0,0,0];
}
for(var i=0; i<time_array.length; i++) { time_array[i] = parseInt(time_array[i], 10); }
time_array.unshift(meta.id);
emit(time_array, null);
}
}
我有一条记录没有设置last_updated字段,因此它的时间字段都设置为零。 我认为,作为第一个测试,我可以过滤掉该结果,然后输入以下内容:
startkey = ["a",2012,0,0,0,0,0]
endkey = ["Z",2014,0,0,0,0,0]
当列表按“ id”排序时,它没有过滤任何内容! 谁能告诉我我在做什么错? 是否有更好的综合视图来实现这些结果?
在沙发床中,当您通过startkey-endkey查询视图时,无法按2个或更多属性过滤结果。 Couchbase只有一个索引,因此它将仅按第一个参数过滤结果。 因此,您的查询将与以下查询相同:
startkey = ["a"]
endkey = ["Z"]
这是Filipe Manana完整答案的链接 ,为什么不能按那些日期过滤它。
这是它的引文:
对于复合键(数组),元素从左到右进行比较,并且当一个元素与另一个键中的对应元素不同时,比较就结束(与比较字符串àla memcmp()或strcmp()时发生的情况相同) 。
因此,如果要使用按日期筛选的视图,则日期数组应在复合键中排在第一位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.