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への移行に不可欠です。

試してみる — SQL to MongoDB Query

フルツールを開く