Null (空の値)
最終更新:2026-10-09
Null (空の値)
Null はフィールドが空の値を保持していることを意味し、フィールドが無いこととは区別されます。`{ field: null }` のようなクエリは、null 値とフィールド無しの両方に一致します。区別するには `$exists` と組み合わせます。慣例: null = 明示的に空、無し = 一度も設定されていない。
| カテゴリ | BSON 型 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ field: null }
db.users.find({ field: null })
db.users.find({ field: { $eq: null, $exists: true } })
戻り値:null 値そのもの。クエリでは一致するドキュメントを返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// Null: null 値とフィールド無し
use shop
db.users.find({ phone: null })
db.users.find({ phone: { $eq: null, $exists: true } })
出力:
// 1つ目: phone が null または無しのユーザー。2つ目: phone が null のもののみ
📌 注意事項
- null と無しは意味論の異なる別状態
- { field: null } は { field: { $eq: null } } と同じで、フィールド無しも含む
- 空文字列 '' は文字列値であり、null には決して一致しない
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Qnull のクエリはフィールドが無いドキュメントも返しますか?
A返します。{ field: null } は null 値とフィールド無しの両方に一致します。
Qnull は空文字列 '' と同じですか?
A違います。'' は文字列値で、null は空です。一方へのクエリが他方に一致することはありません。
Qフィールドが null のドキュメントだけに一致させるには?
A{ field: { $eq: null, $exists: true } } を使い、$exists でフィールド無しを除外します。