$lt (より小さい)
最終更新:2026-10-09
$lt (より小さい)
$lt は、フィールドの値が指定値より厳密に小さいドキュメントを選択します。`{ price: { $lt: 20 } }` は 20 未満の価格の商品に一致します。価格の上限、締切日、スコアの上限などに使います。$gt と組み合わせて開区間を作れます。文字列は辞書順、日付は時系列順に比較され、型に敏感です。
| カテゴリ | 比較 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <field>: { $lt: <value> } }
⚙️ パラメータ
| フィールド | マッチ対象のドキュメントフィールド。 |
|---|---|
| 値 | 上限値。境界自体は除外されます。 |
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $lt: 20 未満の商品
db.products.find({ price: { $lt: 20 } })
// 締切日より前に登録したユーザー
db.users.find({ registeredAt: { $lt: new Date('2026-01-01') } })
出力:
// 20 未満の商品と、2026 年 1 月 1 日より前に登録したユーザーを返す
📌 注意事項
- $lt は境界値を含まない。含めるなら $lte を使う
- 同じフィールドで $gt と $lt を組み合わせると開区間になる。例: { score: { $gt: 60, $lt: 90 } }
- 日付文字列を直接渡すと辞書順で比較される。常に new Date() を使うこと
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$lt と $lte の違いは?
A$lt は厳密に小さい(境界値を含まない)、$lte は以下(境界値を含む)です。20 未満なら $lt: 20、20 以下なら $lte: 20 を使います。
Qスコアが 60 から 90 の間のクエリはどう書きますか?
A1 つのフィールドに組み合わせます: { score: { $gt: 60, $lt: 90 } }。開区間です。
Q$lt を日付に使うときの注意点は?
A日付は new Date('YYYY-MM-DD') でラップします。生の文字列だと辞書順で比較され、想定外の結果になります。