$limit (件数制限)
最終更新:2026-10-09
$limit (件数制限)
$limit は、パイプラインを現在の順序で最初の N 件に切り詰めます。件数だけを変え、内容は変えません。$sort と組み合わせると上位 N 件のクエリになります。$limit を早い段階に置くと後続ステージが処理するデータが激減するため、よく使われる最適化です。
| カテゴリ | コアステージ |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $limit: <positive integer> }
⚙️ パラメータ
| 数 | 保持するドキュメント数。正の整数である必要があります。 |
|---|
戻り値:先頭 N ドキュメントに制限されたドキュメントストリーム
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $limit: 閲覧数の多い記事トップ 5
db.articles.aggregate([
{ $sort: { views: -1 } },
{ $limit: 5 }
])
出力:
// 閲覧数の多い上位 5 記事
📌 注意事項
- $limit はパイプラインの現在の順序で最初の N 件を保持する
- 引数は正の整数である必要があり、0 や負の値はエラーになる
- 真の上位 N 件を得るには、ソートしてから制限する
🏷️ 関連タグ
💡 関連ケース
集計パイプライン入門:aggregateメソッドと基本ステージ
Change Streams:リアルタイム変更監視
$facet + $bucket + テキスト/地理空間検索
$lookupと複数コレクションの関連付け
📚 関連チュートリアル
❓ よくある質問
Q$limit と $skip は併用できますか?
Aはい。$skip で最初の N 件を捨ててから $limit で切り詰めます — オフセット付きページネーションです。
Q$limit を早い段階に置く意味はありますか?
Aあります。切り詰めが早いほど、後続ステージが処理するデータが少なくなります。
Q$limit に変数は指定できますか?
Aいいえ。リテラルの正の整数が必要です。動的な件数が必要なら $facet のサブパイプラインを使います。