Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js CouchDB视图按值排序_Node.js_Sorting_Couchdb_Nano_Couchdb Nano - Fatal编程技术网

Node.js 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

我正在寻找一个性能较差的解决方案来按值对couchdb视图进行排序,因为数据量很大。我在NodeJS应用程序上使用nano包来获得数据库/视图连接

我创建了一个CouchDB视图映射函数,用于配置键值对和减少到_计数:

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。如果您的目标是计数,那么有一些内置函数可以为您做到这一点