SQL WHEREの比較演算子をMongoDBに変換する
SQL WHEREの=、!=、>、<、>=、<=演算子が$eq、$ne、$gt、$lt、$gte、$lteなどのMongoDBクエリ演算子にマッピングされる方法を学びます。
Filtering
詳細な説明
比較演算子:SQLからMongoDBへ
比較演算子を持つSQL WHERE句は、find()に渡されるフィルタードキュメント内のMongoDBクエリ演算子に直接変換されます。
SQLの例
SELECT * FROM products
WHERE price >= 100 AND stock > 0
生成されるMongoDBクエリ
db.products.find({
price: { $gte: 100 },
stock: { $gt: 0 }
})
演算子マッピング表
| SQL演算子 | MongoDB演算子 | 例 |
|---|---|---|
= |
暗黙 / $eq |
{ status: "active" } |
!= または <> |
$ne |
{ status: { $ne: "deleted" } } |
> |
$gt |
{ age: { $gt: 21 } } |
>= |
$gte |
{ price: { $gte: 100 } } |
< |
$lt |
{ quantity: { $lt: 5 } } |
<= |
$lte |
{ rating: { $lte: 3 } } |
暗黙のAND
上記のように複数の条件が同じフィルタードキュメントに配置される場合、MongoDBはそれらを暗黙のANDとして扱います。これはSQLのANDキーワードと同等であり、条件を組み合わせる最も一般的なパターンです。
等値の省略形
等値チェックの場合、MongoDBは値を直接配置する省略形を使用します:{ status: { $eq: "active" } }の代わりに{ status: "active" }。両方の形式が機能しますが、省略形の方がより慣用的で広く使用されています。
型を考慮した比較
MongoDBの比較は型を考慮します。文字列フィールドを数値と比較してもマッチしません。暗黙の型キャストを行う一部のSQLデータベースとは異なります。フィルター値が保存されたデータ型と一致することを確認してください。
ユースケース
価格帯、在庫状況、評価しきい値で商品カタログをフィルタリングするAPIエンドポイントは、ECアプリケーションで最も一般的なクエリの一つです。比較演算子のマッピングを理解することは、SQLからMongoDBへの移行に不可欠です。