MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで範囲検索を行う方法:sort()とlimit()の組み合わせ

MongoDBで範囲検索を行う方法

MongoDBで範囲検索(特定の値以下・以上のドキュメントを取得する検索)を行うには、比較演算子とsort()limit()を組み合わせて使用します。ここでは、実際のサンプルコードを使いながら手順を詳しく解説します。

1. サンプルコレクションの作成

まず、insertOne()メソッドを使って、ドキュメントを含むコレクションを作成しましょう。

> db.demo665.insertOne({"Value":10});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1bf1424113ea5458c7d08")
}
> db.demo665.insertOne({"Value":15});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1bf1b24113ea5458c7d09")
}
> db.demo665.insertOne({"Value":55});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1bf1e24113ea5458c7d0a")
}
> db.demo665.insertOne({"Value":25});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1bf2324113ea5458c7d0b")
}
> db.demo665.insertOne({"Value":20});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1bf2b24113ea5458c7d0c")
}

2. すべてのドキュメントを表示

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。

> db.demo665.find();

上記のクエリを実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5ea1bf1424113ea5458c7d08"), "Value" : 10 }
{ "_id" : ObjectId("5ea1bf1b24113ea5458c7d09"), "Value" : 15 }
{ "_id" : ObjectId("5ea1bf1e24113ea5458c7d0a"), "Value" : 55 }
{ "_id" : ObjectId("5ea1bf2324113ea5458c7d0b"), "Value" : 25 }
{ "_id" : ObjectId("5ea1bf2b24113ea5458c7d0c"), "Value" : 20 }

3. 範囲検索クエリの実行

以下が、MongoDBで範囲検索を行うためのクエリの例です。

> db.demo665.find({Value:{$lte:30}}).sort({Value:-1}).limit(2);

このクエリの各部分の意味は以下の通りです。

  • $lte:30:「Value」が30以下(less than or equal)のドキュメントを抽出します。
  • sort({Value:-1}):「Value」の降順に結果を並べ替えます。
  • limit(2):上位2件のドキュメントのみを取得します。

実行結果は以下の通りです。

{ "_id" : ObjectId("5ea1bf2324113ea5458c7d0b"), "Value" : 25 }
{ "_id" : ObjectId("5ea1bf2b24113ea5458c7d0c"), "Value" : 20 }

このように、比較演算子で範囲を絞り込み、sort()limit()を組み合わせることで、条件に合うドキュメントを効率的に取得できます。なお、範囲検索の対象フィールドにインデックスを作成しておくと、大量のデータを扱う場合でもパフォーマンスを大幅に向上させることができます。

  1. MongoDBでforループを使用して値をプッシュ(挿入)する方法

    MongoDBでforループを使用して値をプッシュ(挿入)する方法MongoDBで値を繰り返しコレクションへ挿入(プッシュ)したい場合、save()メソッドとforループを組み合わせることで簡単に実現できます。ここでは、実際のコード例を交えながら手順を解説します。1. forループでドキュメントを作成するまず、forループを使ってコレクションにドキュメントを作成します。以下の例では、ループを6回まわして同じ内容のドキュメントを保存しています。> for(var v=1; v<7; v++) {... db.demo739.save({Name:Chris,SubjectName:M

  2. MySQLのvarchar型フィールドで整数値を検索する方法【CASE文の活用】

    MySQLでは、varchar型のフィールドに格納された値の中から整数値を検索したい場合、CASE文を活用することで実現できます。本記事では、varchar型フィールドから特定の整数値を検索する具体的な手順を、サンプルコードと実行結果付きでわかりやすく解説します。 サンプルテーブルの作成 まず、検索対象となるテーブルを作成しましょう。ここでは、先頭に数字が付いたメールアドレスのリストを扱う例を考えます。 mysql> create table DemoTable-> (-> Title varchar(100)-> );Query OK, 0 rows affect