嗨,我是沙发基地的新手。我有一个如下的观点:
function (doc, meta) {
if(doc.docType == "DeviceData")
emit([doc.group, doc.time], [doc.node, doc.node_gps_lat, doc.node_gps_long]);
}
所以我想得到按doc.node值排序的结果。我搜索了文档,但找不到合适的解决方案。
请提供帮助。
答案 0 :(得分:2)
Couchbase按键排序结果。因此,在您的示例中,结果将首先按doc.group
排序,然后按doc.time
排序。如果您想按doc.node
对结果进行排序,则应将该字段包含在客户端/应用端的密钥或排序结果中。
如果您在某个时间范围内查看视图(startkey
和endkey
与doc.time
param不同,请按照previous question的顺序排序。节点只能在客户端/应用程序端。如果你想在couchbase方面进行排序 - 尝试更改你的数据模型。
答案 1 :(得分:0)
我想我正在添加m03geek上面所说的内容,为了按特定列(CB中的值)排序,您需要将该值作为键传递回去。我正在使用CB构建Django应用程序,我想按创建日期排序,因此我创建了以下视图映射函数。
function (doc, meta) {
if (doc.type && doc.type == "snapshot" && doc.published == "yes" && doc.section == "sports") {
var arrDate = doc.create_date.split("-");
var newDate = new Date(arrDate[2], arrDate[0], arrDate[1]);
var numTime = newDate.getTime();
doc.time = numTime;
emit(doc.time, null);
}
}

在上面的map函数中,我将字符串创建日期转换为数字时间,然后将其作为按创建日期对结果进行排序的键发出。