1

これが私の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 ???
}
4

1 に答える 1

4

マップを使用する場合、1 次元インデックスの作成を使用しています。あなたが直面している問題は、「kudus」プロパティの結果を表示するソート順が age キーの昇順と逆になっていることです。簡単な修正は次のとおりです。

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

これにはreduce関数は必要ありません。

負の数が表示されるのは少しおかしいですが、正しい並べ替え順序が得られます。Math.abs(key[1]) または value.kudus を使用して、実際の値を取得できます。

于 2012-10-01T20:44:00.170 に答える