$eq (等しい)
最終更新:2026-10-09
$eq (等しい)
$eq は、フィールドの値が指定した値と等しいドキュメントを選択します。MongoDB で最もよく使われる完全一致の述語です。`{ age: { $eq: 21 } }` は `{ age: 21 }` と同じ意味ですが、$eq と書くことで等値の意図が明確になり、集計式の中でも比較演算子として使えます。$eq は型に敏感な点に注意してください。文字列「21」は数値の 21 とは一致しません。また、明示的な `{ $eq: /pattern/ }` は BSON の正規表現値のみに一致します。暗黙の `{ field: /pattern/ }` が正規表現マッチを行うのとは異なります。
| カテゴリ | 比較 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <field>: { $eq: <value> } }
⚙️ パラメータ
| フィールド | マッチ対象のドキュメントフィールド。ドット記法でネストしたフィールドにアクセスします(例: "address.city")。 |
|---|---|
| 値 | マッチする値。リテラルまたは式が可能で、BSON 型に依存します。 |
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $eq: age が 21 と完全一致
db.users.find({ age: { $eq: 21 } })
// 同等の暗黙的な等値指定
db.users.find({ age: 21 })
// ネストしたフィールド + 型の確認
db.users.find({ "address.city": { $eq: "Beijing" } })
出力:
// age が数値型でちょうど 21 のドキュメントを返す
{ "_id": ObjectId("..."), "name": "Alice", "age": 21, "address": { "city": "Beijing" } }
📌 注意事項
- 型に敏感:{ $eq: "21" } は数値の 21 に一致しない
- スカラー値の場合、配列フィールドは要素のいずれかがその値と等しければ一致する($elemMatch: { $eq: value } と同じ)。配列値を指定した場合は、フィールドが配列全体と等しいか、完全に一致する要素を含む必要がある
- $eq: null はフィールドが存在しない、または null のドキュメントに一致する($exists: false とは異なる)
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$eq と { age: 21 } を直接書く場合の違いは?
A機能的には同じです。$eq は等値の意図を明確にし、$and/$or の組み合わせの中で読みやすくなります。
Q$eq は null に一致しますか?
Aはい。$eq: null はフィールドが存在しないか null のドキュメントに一致します。リテラルの null だけに一致させたい場合は、$type: 10 (Null) と組み合わせます。
Q$eq は配列フィールドでどのように動作しますか?
Aいずれかの配列要素が値と等しければ一致します($elemMatch と同等)。配列全体を完全一致させたい場合は、配列リテラルを直接指定するか、$size と組み合わせます。