Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这是我的 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 ??? }
使用地图时,您正在使用创建一维索引。您遇到的问题是您希望结果显示在“kudus”属性中的排序顺序与年龄键的 asc 顺序相反。这是一个简单的修复:
// map function(doc) { emit([doc.age, -doc.kudus], doc); }
为此,您不需要 reduce 函数。
看到负数有点有趣,但它可以让你得到正确的排序顺序。您可以 Math.abs(key[1]) 或使用 value.kudus 来获得真正的价值。