map() (カーソルの変換)
最終更新:2026-10-09
map() (カーソルの変換)
map() はカーソル内のすべてのドキュメントに変換を適用し、結果を配列として返します。例: `db.users.find().map(function(u) { return u.name })`。forEach() に結果収集を足したものと考えてください。フィールドの抽出やデータの再整形に便利です。map() はカーソル全体を消費し、新しいカーソルではなく配列を返すことに注意してください。
| カテゴリ | カーソル |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.find(<filter>).map(<transform>)
⚙️ パラメータ
| 変換関数 | ドキュメントを新しい値にマップする関数(例: function(u) { return u.name })。 |
|---|
戻り値:変換された値の配列。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// map: 成人ユーザーの名前をすべて抽出する
const names = db.users.find({ age: { $gte: 18 } }).map(u => u.name)
names
出力:
[ 'Alice', 'Bob', 'Cara' ]
📌 注意事項
- map() はカーソルを消費し、配列を返す
- 変換は新しい値を生成する。データベースのドキュメントは変更されない
- 先にカーソルのチェーンを完了し、最後に map で配列にする
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Qmap と forEach の違いは何ですか?
Amap() は変換後の値の配列を返し、抽出に使います。forEach() はコールバックを実行し、何も返しません。
Qmap の結果は配列ですか?
Aはい。map() は配列を返します。forEach に結果収集を足したものです。
Qmap はデータベースのドキュメントを変更しますか?
Aいいえ。変換はクライアント側でメモリ上のコピーに対して実行されます。