$gt (より大きい)
最終更新:2026-10-09
$gt (より大きい)
$gt は、フィールドの値が指定値より厳密に大きいドキュメントを選択します。`{ age: { $gt: 21 } }` は 21 歳より上のユーザーに一致し、ちょうど 21 は含みません。価格の下限、日付の絞り込み、スコアの閾値など範囲クエリに使います。$gte と違い境界値を含みません。文字列は辞書順、日付は時系列順に比較されます。
| カテゴリ | 比較 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <field>: { $gt: <value> } }
⚙️ パラメータ
| フィールド | マッチ対象のドキュメントフィールド。ドット記法でネストしたフィールドにアクセスします。 |
|---|---|
| 値 | 比較の境界値。境界自体は除外されます。 |
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $gt: 21 歳より上のユーザーを検索(21 は含まない)
db.users.find({ age: { $gt: 21 } })
// 価格の下限 + 日付範囲
db.products.find({ price: { $gt: 100 } })
db.orders.find({ createdAt: { $gt: new Date('2026-09-01') } })
出力:
// age が 21 超のユーザー、price が 100 超の商品、9 月 1 日以降の注文を返す
📌 注意事項
- $gt は境界値を含まない。含めるなら $gte を使う
- 同じフィールドで $gt と $lt を組み合わせると開区間になる。例: { price: { $gt: 10, $lt: 20 } }
- 数値と文字列は相互変換されない。$gt: 10 は文字列 '10' に一致しない
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$gt と $gte の違いは?
A$gt は厳密に大きい(境界値を含まない)、$gte は以上(境界値を含む)です。21 歳より上なら $gt: 21、21 歳以上なら $gte: 21 を使います。
Q$gt で文字列や日付を比較できますか?
Aはい。文字列は辞書順に比較されます。日付は new Date() でラップすると時系列順に比較され、生の文字列のままではテキストとして比較されます。
Q価格が 10 から 20 の間のクエリはどう書きますか?
A1 つのフィールドに複合条件を書きます: { price: { $gt: 10, $lt: 20 } }。これは開区間になります。