batchSize() (バッチ取得サイズの設定)
最終更新:2026-10-09
batchSize() (バッチ取得サイズの設定)
batchSize() はカーソルがサーバーから1バッチあたりに取得するドキュメント数を設定します: `db.users.find().batchSize(100)`。ラウンドトリップとメモリのトレードオフです。バッチが大きいほどリクエスト数は減りますが、バッチあたりのメモリが増えます。通常はサーバーのデフォルトで十分です。遅いリンクや巨大な結果セットでは、batchSize の調整がスループット向上に役立ちます。
| カテゴリ | カーソル |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.find(<filter>).batchSize(<size>)
⚙️ パラメータ
| 数 | バッチあたりのドキュメント数。0 で既定値に戻ります。 |
|---|
戻り値:バッチサイズを適用したカーソル(チェーン可能)。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// batchSize: 1バッチ50件でストリーム処理しながら取得する
const cursor = db.users.find().batchSize(50)
cursor.forEach(doc => print(doc.name))
出力:
Alice
Bob
Cara
📌 注意事項
- 0 はサーバーのデフォルトに戻す
- 過大なバッチは転送あたりのメモリを膨らませる
- forEach() のストリーム処理と最も相性が良い
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Qどの batchSize を使うべきですか?
A通常はデフォルトで十分です。高速ネットワークではラウンドトリップ削減のため上げ、メモリが逼迫しているときは下げます。
QbatchSize と limit はどう違いますか?
Alimit() は返されるドキュメントの総数を制限します。batchSize() は転送チャンクサイズだけを制御し、総数は変わりません。
QbatchSize(0) は何を意味しますか?
A0 はサーバーのデフォルトのバッチサイズに戻します。