$gte (以上)
最終更新:2026-10-09
$gte (以上)
$gte は、フィールドの値が指定値以上のドキュメントを選択します。`{ age: { $gte: 21 } }` は 21 歳以上のユーザーに一致します。$gt の境界値を含むバージョンで、「以上」の意味を表します。年齢の下限、在庫の最少値、時間ウィンドウなどに使います。$lte と組み合わせれば閉区間になります。
| カテゴリ | 比較 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <field>: { $gte: <value> } }
⚙️ パラメータ
| フィールド | マッチ対象のドキュメントフィールド。ドット記法でネストしたフィールドにアクセスします。 |
|---|---|
| 値 | 下限値。境界自体が含まれます。 |
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $gte: 18 歳以上のユーザー
// ちょうど 18 も含まれる
db.users.find({ age: { $gte: 18 } })
// 閉区間: 18 歳から 30 歳まで
db.users.find({ age: { $gte: 18, $lte: 30 } })
出力:
// age が 18 以上のユーザーと、閉区間 18〜30 のユーザーを返す
📌 注意事項
- $gte は境界値を含む。$gt との違いはこれだけ
- 数値・文字列・日付はどれも比較できるが、型が異なると決して一致しない
- $lte と組み合わせて範囲を逆にすると(例: $gte: 30, $lte: 18)何も一致しない
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$gte と $gt ではどちらが速い?
Aパフォーマンスは同じで、どちらもインデックスを使えます。境界値を含めるかどうかで選びます。
Q在庫が 10 以上の商品をクエリするには?
A$gte を下限にします: { stock: { $gte: 10 } }。
Q$gte は null に一致しますか?
Aいいえ。null は数値と比較できないため、$gte は同じ型の比較可能な値にのみ一致します。