CouchDB の特定のビューから返される結果の数を制限するために、REST API を使用して「制限」パラメーター (?limit=5 など) を指定できることを認識しています。
私の質問は、ビュー内のマップ関数自体の中でこれを行う方法があるかどうかです...?
特定の質問に対する答えは「いいえ」です。
map 関数はデータベース内のすべてのドキュメントに適用され、reduce 関数が定義されている場合は、すべての reduce 結果に適用されます。事前計算を考えてください。
URL で指定したクエリ パラメーターは、MapReduce 関数が構築する B+Tree に適用されます。たとえば、次のように指定すると?limit=5
、ツリーの左端の 5 つのリーフが結果として使用されます。または?limit=5&descending=true
、ツリーの右端の 5 つのリーフが結果として使用されるとします。
ただし、?limit=5
マップ関数で実行することによって達成しようとしていることは、別の方法で達成される場合があります。たとえば、アプリケーションは、条件付きで結果に含まれるようにするドキュメントに何かを含めることができます。または、データベースのサイズによっては面倒でコストがかかるものの、5 つのドキュメントのみをインデックスに登録するように強制します。
乾杯。
UUID が連続している場合 (その構成を確認できます)、最初の 5 つのドキュメントを表示するだけで、それ自体を活用できる場合があります。