Node.js CouchDB视图按值排序
我正在寻找一个性能较差的解决方案来按值对couchdb视图进行排序,因为数据量很大。我在NodeJS应用程序上使用nano包来获得数据库/视图连接 我创建了一个CouchDB视图映射函数,用于配置键值对和减少到_计数:Node.js CouchDB视图按值排序,node.js,sorting,couchdb,nano,couchdb-nano,Node.js,Sorting,Couchdb,Nano,Couchdb Nano,我正在寻找一个性能较差的解决方案来按值对couchdb视图进行排序,因为数据量很大。我在NodeJS应用程序上使用nano包来获得数据库/视图连接 我创建了一个CouchDB视图映射函数,用于配置键值对和减少到_计数: function (doc) { emit(doc.msg, 1); } 要获取我的观点,我正在使用: alice.view('VIEWNAME', 'INDEXNAME', {'group': true).then((body) => { body.rows.fo
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。
现在,我想根据值对视图描述进行排序:
Hello 155
Foo 140
Bar 100
但是我的视图的唯一排序版本是按键,我的视图是按键ASC排序的
我在NodeJS端尝试了几种解决方案,但我不想失去太多性能。您不能这样做。视图本质上只按键排序。解决方案是创建另一个按不同键排序的视图。我在NodeJS端构建了一个变通方法:
body.rows.sort(function (a, b) {
return parseInt(b.value,10) - parseInt(a.value,10);
});
我不是百分之百满意,但解决方案帮助了我。我仍然无法估计排序在节点端的性能谢谢您的回答。。。问题是在我的数据库中,我的值总是1。在组函数之后,值被计数。我不确定问题出在哪里。您可以在map函数中使值成为您想要的任何值。不管是什么。顺便说一句,可能从来没有理由为所有文档发出值1。如果您的目标是计数,那么有一些内置函数可以为您做到这一点