Array (配列)
最終更新:2026-10-09
Array (配列)
Array は任意の BSON 値(ネストされた配列やドキュメントを含む)の順序付きリストです。マッチングはメンバーシップで、`{ tags: 'mongodb' }` は tags 配列にその値を持つドキュメントに一致します。`$elemMatch` は複数の条件を同じ要素に強制します。配列フィールドにインデックスを作るとマルチキーインデックスになり、各要素が個別に展開されます。
| カテゴリ | BSON 型 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ tags: ["mongodb", "nosql"] }
db.posts.find({ tags: "mongodb" })
db.posts.find({ ratings: { $elemMatch: { score: { $gte: 4 }, user: "alice" } } })
戻り値:配列値そのもの。クエリでは一致するドキュメントを返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// Array: メンバーシップと $elemMatch
use shop
db.posts.insertOne({ tags: ['mongodb', 'tutorial'], ratings: [{ score: 5, user: 'alice' }] })
db.posts.find({ tags: 'mongodb' })
出力:
{ _id: ObjectId('...'), tags: ['mongodb', 'tutorial'], ratings: [{ score: 5, user: 'alice' }] }
📌 注意事項
- 配列フィールドへのクエリは「いずれかの要素が一致」を意味する
- $elemMatch は全条件を同じ要素に適用する
- 配列へのインデックス作成はマルチキーインデックスになる
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q配列のマッチングは完全一致が必要ですか?
Aいいえ、メンバーシップです。{ tags: 'a' } は tags 配列に 'a' を含むドキュメントに一致し、配列全体の等値ではありません。
Q1つの要素に複数の条件をマッチさせるには?
A$elemMatch を使います: { score: ..., user: ... } のように全条件が同じ要素に適用されます。
Q配列にインデックスを作れますか?
Aはい。マルチキーインデックスが作成され、各要素が個別にインデックス化されます。