Nosql “地图缩小”;“订购”;2列

Nosql “地图缩小”;“订购”;2列,nosql,mapreduce,couchdb,Nosql,Mapreduce,Couchdb,以下是我的SQL查询,其中列出了最年轻和最有天赋的狗: SELECT * FROM dog ORDER BY dog.age ASC, dog.kudus DESC 如何将其转换为地图/缩小 // Map function (doc) { emit([doc.age, doc.kudus], doc); } // Reduce function (keys, values) { return ??? } 使用地图时,您正在使用创建一维索引。您遇到的问题是,您希望结果显示在“kudus

以下是我的SQL查询,其中列出了最年轻和最有天赋的狗:

SELECT * FROM dog
ORDER BY dog.age ASC, dog.kudus DESC
如何将其转换为地图/缩小

// Map
function (doc) {
  emit([doc.age, doc.kudus], doc);
}
// Reduce
function (keys, values) {
  return ???
}

使用地图时,您正在使用创建一维索引。您遇到的问题是,您希望结果显示在“kudus”属性中的排序顺序与age键的asc顺序相反。以下是一个简单的修复方法:

// map
function(doc) {
   emit([doc.age, -doc.kudus], doc);
}
您不需要为此使用reduce函数


看到负数有点可笑,但它可以让您获得正确的排序顺序。您可以使用Math.abs(键[1])或value.kudus获取实际值。

使用地图时,您使用的是创建一维索引。您遇到的问题是,您希望结果显示在“kudus”属性中的排序顺序与age键的asc顺序相反。以下是一个简单的修复方法:

// map
function(doc) {
   emit([doc.age, -doc.kudus], doc);
}
您不需要为此使用reduce函数


看到负数有点可笑,但它可以让您获得正确的排序顺序。您可以使用Math.abs(键[1])或value.kudus来获取实际值。

太棒了!我处理过(99999999-doc.kudus),但是你的负面技巧很巧妙,thx很多!值得一提的是,您不应将
doc
作为值发出。如果希望文档发出
null
作为一个值,并使用
include\u docs=true
查询参数。是的,屋大维是正确的。如果将文档作为值发出,则是在复制索引中的数据。如果需要,您可以发出正的doc.kudus,但同样地,如果您在查询中使用include_docs=true,则可以很容易地从键进行计算或检索。非常好!我处理过(99999999-doc.kudus),但是你的负面技巧很巧妙,thx很多!值得一提的是,您不应将
doc
作为值发出。如果希望文档发出
null
作为一个值,并使用
include\u docs=true
查询参数。是的,屋大维是正确的。如果将文档作为值发出,则是在复制索引中的数据。如果需要,您可以发出正doc.kudus,但同样地,从键计算非常简单,或者,如果您在查询中使用include_docs=true,则检索。不理解此问题为什么关闭,因为它找到了答案并且人们投票支持…不理解此问题为什么关闭,因为它找到了答案并且人们投票支持。。。