$objectToArray (オブジェクトをキーと値のペア配列に変換)
最終更新:2026-10-09
$objectToArray (オブジェクトをキーと値のペア配列に変換)
$objectToArray はドキュメントをキーと値のペアの配列に変換します。各要素は { k: 'フィールド名', v: 'フィールド値' } の形になります。フィールド名が動的な場合(ユーザーごとのスコア次元など)に $map/$filter で全フィールドを一様に処理でき、サブドキュメントを集計前にフラット化するのにも便利です。引数はプレーンなドキュメントである必要があり、配列はエラーになります。$arrayToObject と組み合わせれば往復変換ができます。
| カテゴリ | 配列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $objectToArray: <object> }
⚙️ パラメータ
| オブジェクト | 変換するドキュメント(BSON オブジェクト)式。 |
|---|
戻り値:キーと値のペア { k: 'fieldName', v: 'value' } の配列。引数が null の場合は null
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $objectToArray: スコアのサブドキュメントを配列に変換
db.users.aggregate([
{ $project: {
scores: { $objectToArray: '$scores' }
} }
])
出力:
{ '_id': 1, 'scores': [ { 'k': 'math', 'v': 90 }, { 'k': 'eng', 'v': 85 } ] }
📌 注意事項
- 結果の各要素は、k が文字列のフィールド名、v がフィールド値
- 変換できるのはプレーンなドキュメントのみ。配列やスカラーはエラー
- フィールドの順序は挿入順に従う。動的フィールドの処理は $map/$filter と組み合わせる
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q動的フィールド名を一様に処理するには?
A先に $objectToArray で変換し、$map/$filter で処理してから $arrayToObject で戻します。
Q配列を変換できますか?
Aいいえ — 引数はドキュメントである必要があり、配列はエラーになります。
Qフィールドの順序は保たれますか?
Aはい — 挿入順が維持されます。