toArray() (カーソルを配列に変換)
最終更新:2026-10-09
toArray() (カーソルを配列に変換)
toArray() は find() 形式のカーソルが参照するすべてを取得し、JavaScript の配列として返します: `db.users.find({ age: { $gt: 20 } }).toArray()`。カーソルは一気に完全に消費されます。クライアント側で処理する小さな結果セットには問題ありません。巨大な結果は大量のメモリを消費するため、大規模コレクションでは forEach() によるストリーミングを推奨します。
| カテゴリ | カーソル |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.find(<filter>).toArray()
戻り値:すべての結果ドキュメントの配列。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// toArray: 成人ユーザーの結果を配列に変換する
const users = db.users.find({ age: { $gte: 18 } }).toArray()
print('Total: ' + users.length)
出力:
Total: 42
📌 注意事項
- すべてを一度に取得する。大きな結果セットはメモリを消費する
- 以後カーソルは使い果たされ、再度反復できない
- BSON レスポンス上限を超える結果はエラーになる。limit() やページングと組み合わせる
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Qfind() は配列を返しますか?
Aいいえ、find() はカーソルを返します。配列にするには .toArray() を呼ぶか、forEach() などで反復します。
QtoArray はすべてのデータを一度に読み込みますか?
Aはい。すべてがクライアントのメモリに入ります。巨大な結果セットはメモリを圧迫するため、代わりに forEach() でストリーム処理してください。
QtoArray の後、カーソルを反復できますか?
Aできません。カーソルは使い果たされます。再度必要なら配列を変数に保存してください。