1

这是我的 SQL 查询,它列出了最年轻和最有才华的狗:

SELECT * FROM dog
ORDER BY dog.age ASC, dog.kudus DESC

如何将其转换为 map/reduce?

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

1 回答 1

4

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

// map
function(doc) {
   emit([doc.age, -doc.kudus], doc);
}

为此,您不需要 reduce 函数。

看到负数有点有趣,但它可以让你得到正确的排序顺序。您可以 Math.abs(key[1]) 或使用 value.kudus 来获得真正的价值。

于 2012-10-01T20:44:00.170 回答