これが私の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 ???
}
マップを使用する場合、1 次元インデックスの作成を使用しています。あなたが直面している問題は、「kudus」プロパティの結果を表示するソート順が age キーの昇順と逆になっていることです。簡単な修正は次のとおりです。
// map
function(doc) {
emit([doc.age, -doc.kudus], doc);
}
これにはreduce関数は必要ありません。
負の数が表示されるのは少しおかしいですが、正しい並べ替え順序が得られます。Math.abs(key[1]) または value.kudus を使用して、実際の値を取得できます。