CouchDB视图按值排序

r8xiu3jd  于 2022-12-09  发布在  CouchDB
关注(0)|答案(2)|浏览(143)

我正在寻找一个性能不佳的解决方案来按值对我的couchdb视图进行排序(因为数据量很大)。我正在我的NodeJS应用程序上使用“nano”包来获得数据库/视图连接。
我创建了一个CouchDB视图Map函数,用于配置键值对和Reduce to _count:

function (doc) {
  emit(doc.msg, 1);
}

要获取我正在使用的视图,请执行以下操作:

alice.view('VIEWNAME', 'INDEXNAME', {'group': true).then((body) => { 
body.rows.forEach((doc) => {
  console.log(doc.key + " " + doc.value);
 }
}

例如,视图返回“Hello”作为doc.key,返回“155”作为doc. value。因此,我有155个关键字为Hello的文档。现在,我想从值对视图DESC进行排序:

Hello 155
Foo   140
Bar   100

但是我的视图的唯一排序版本是按键排序的,我的视图是按键ASC排序的。
我在NodeJS端尝试了几个解决方案,但我不想失去太多的性能。

u0njafvf

u0njafvf1#

您不能这样做。视图本质上只按键排序。解决方法是创建另一个按不同键排序的视图。

5w9g7ksd

5w9g7ksd2#

我在NodeJS端构建了一个变通方案:

body.rows.sort(function (a, b) {
    return parseInt(b.value,10) - parseInt(a.value,10);
});

我不是100%满意,但是这个解决方案帮助了我。我仍然不能估计排序在NodeJS端需要多少性能

相关问题