嗨,我是沙发基地的新手。我有如下观点:
function (doc, meta) {
if(doc.docType == "DeviceData")
emit([doc.group, doc.time], [doc.node, doc.node_gps_lat, doc.node_gps_long]);
}
所以我想得到按 doc.node 值排序的结果。我搜索了文档,但找不到合适的解决方案。
请在这方面需要帮助。
Couchbase 按键排序结果。因此,在您的示例中,结果将首先按 排序doc.group
,然后按 排序doc.time
。如果要按 对结果进行排序doc.node
,则应将该字段包含在键中或在客户端/应用程序端对结果进行排序。
如果您在某个时间范围内查询您的视图(您有startkey
,并且endkey
与上一个问题doc.time
中的参数不同)只能在客户端/应用程序端通过 doc.node 进行排序。如果您想在 couchbase 方面进行排序 - 尝试更改您的数据模型。
我想我要补充一下 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 函数中,我将字符串创建日期转换为数字时间,然后将其作为键发出,按创建日期对结果进行排序。