这是我的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 ???
}
答案 0 :(得分:4)
使用地图时,您正在使用创建1维索引。您遇到的问题是您希望结果显示为'kudus'属性的排序顺序与年龄键的asc顺序相反。这是一个简单的修复:
// map
function(doc) {
emit([doc.age, -doc.kudus], doc);
}
您不需要减少功能。
看到负数有点好笑,但它会让你获得正确的排序顺序。你可以使用Math.abs(key [1])或使用value.kudus来获得真正的价值。