MongoDBで複数の条件を指定して範囲内の値を取得する方法
MongoDBで範囲条件を使ってドキュメントを検索する
MongoDBでは、$gt(より大きい)や$lt(より小さい)といった比較演算子を組み合わせることで、特定の範囲内に収まる値を持つドキュメントを簡単に抽出できます。本記事では、実際のコード例を使いながら、その手順をわかりやすく解説します。
1. サンプルコレクションとドキュメントの作成
まずは、insertOne()メソッドを使ってサンプルデータを作成します。ここではdemo59というコレクションに、数値フィールド「Values」を持つドキュメントを4件登録します。
> db.demo59.insertOne({"Values":50});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e286286cfb11e5c34d89923")
}
> db.demo59.insertOne({"Values":10});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e286288cfb11e5c34d89924")
}
> db.demo59.insertOne({"Values":58});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e28628ccfb11e5c34d89925")
}
> db.demo59.insertOne({"Values":78});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e28628fcfb11e5c34d89926")
}
2. コレクション内の全ドキュメントを表示する
登録されたデータを確認するために、find()メソッドを実行して全ドキュメントを表示してみましょう。
> db.demo59.find();
実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5e286286cfb11e5c34d89923"), "Values" : 50 }
{ "_id" : ObjectId("5e286288cfb11e5c34d89924"), "Values" : 10 }
{ "_id" : ObjectId("5e28628ccfb11e5c34d89925"), "Values" : 58 }
{ "_id" : ObjectId("5e28628fcfb11e5c34d89926"), "Values" : 78 }
3. 範囲条件($gt / $lt)で値を抽出するクエリ
ここからが本題です。次のクエリでは、「Values」が51より大きく70未満という複数の条件を同時に指定しています。
> db.demo59.find({Values:{$gt:51, $lt:70}});
$gtは「指定した値より大きい」、$ltは「指定した値より小さい」ことを意味します。これらを同じフィールドに対して並べて記述することで、AND条件として機能し、両方の条件を満たすドキュメントのみが取得されます。
実行結果は以下の通りです。
{ "_id" : ObjectId("5e28628ccfb11e5c34d89925"), "Values" : 58 }
4件のドキュメントのうち、「Values」が51〜70の範囲に含まれるのは58だけであるため、この1件のみが出力されました。
補足:その他の便利な比較演算子
- $gte:指定した値以上(境界値を含む)
- $lte:指定した値以下(境界値を含む)
- $ne:指定した値と等しくない
- $in:指定した配列内のいずれかに一致
たとえば境界値も含めて「50以上70以下」で検索したい場合は、{Values:{$gte:50, $lte:70}}のように記述します。用途に応じて演算子を使い分けることで、柔軟な範囲検索が可能になります。
まとめ
MongoDBで範囲検索を行うには、find()メソッドのクエリに$gtや$ltなどの比較演算子を組み合わせます。複数の条件を同一フィールドに対して指定すると自動的にAND条件として扱われるため、直感的かつシンプルに範囲内のデータを取得できます。大量のデータから特定のレンジを絞り込む際にぜひ活用してください。
-
【JavaScript】localStorageに値を設定・取得する方法をわかりやすく解説
JavaScriptのWeb Storage APIのひとつであるlocalStorageを使うと、ブラウザにデータを永続的に保存できます。ページを再読み込みしても値が消えないため、ユーザー設定や入力内容の一時保存などに便利です。 値を保存するには localStorage.setItem(キー名, 保存する値) を使用し、保存した値を取り出すには localStorage.getItem(キー名) を使用します。 サンプルコード 以下は、テキストボックスに入力された値が変更されるたびに、その値をlocalStorageへ自動的に保存するコード例です。 <!DOCTYPE html>
-
MySQLでNULLを含む複数の列から最大値を取得する方法(GREATESTとCOALESCE)
MySQLで複数の列の中から最大値を取得したい場合、GREATEST()関数を使うのが一般的です。しかし、GREATEST()には一つ重要な注意点があります。それは、引数のいずれかにNULLが含まれていると、結果もNULLになってしまうという点です。 この問題を回避するには、COALESCE()関数を組み合わせます。COALESCE()は、引数の中で最初に現れたNULL以外の値を返す関数のため、NULLを任意の値(ここでは0)に置き換えることができます。 それでは、実際の手順を順番に見ていきましょう。 1. テーブルを作成する まず、3つの整数型カラムを持つテーブルを作成します。 mysql