MongoDBでコレクション内の最小値を取得する方法
MongoDBで最小値を取得する基本の考え方
MongoDBでコレクション内の最小値を持つドキュメントを取得したい場合は、sort()メソッドとlimit(1)を組み合わせるのが定番の手法です。対象のフィールドを昇順(1)で並べ替え、先頭の1件だけを取得することで、最小値を効率よく取り出せます。
ここでは、実際のコマンド例を使いながら、コレクションの作成から最小値の取得までの手順を順番に見ていきましょう。
1. サンプルコレクションの作成
まず、insertOne()メソッドを使って数件のドキュメントを挿入し、テスト用のコレクション「findMinimumValueDemo」を作成します。
> db.findMinimumValueDemo.insertOne({"Value":1004});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cdfd61abf3115999ed51208")
}
> db.findMinimumValueDemo.insertOne({"Value":983});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cdfd61ebf3115999ed51209")
}
> db.findMinimumValueDemo.insertOne({"Value":990});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cdfd622bf3115999ed5120a")
}
> db.findMinimumValueDemo.insertOne({"Value":1093});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cdfd626bf3115999ed5120b")
}
> db.findMinimumValueDemo.insertOne({"Value":10090});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cdfd62fbf3115999ed5120c")
}この時点で、「Value」フィールドに 1004、983、990、1093、10090 という5つの数値が登録されました。この中から最小値「983」を取得できるかどうかを確認していきます。
2. 登録済みドキュメントの確認
find()メソッドを実行すると、コレクション内のすべてのドキュメントを表示できます。
> db.findMinimumValueDemo.find();
実行結果は以下の通りです。
{ "_id" : ObjectId("5cdfd61abf3115999ed51208"), "Value" : 1004 }
{ "_id" : ObjectId("5cdfd61ebf3115999ed51209"), "Value" : 983 }
{ "_id" : ObjectId("5cdfd622bf3115999ed5120a"), "Value" : 990 }
{ "_id" : ObjectId("5cdfd626bf3115999ed5120b"), "Value" : 1093 }
{ "_id" : ObjectId("5cdfd62fbf3115999ed5120c"), "Value" : 10090 }3. 最小値を取得するクエリ
いよいよ最小値を取得します。find()の結果に対して sort({Value: 1}) で「Value」フィールドを昇順に並べ替え、limit(1) で先頭の1件のみに絞り込みます。
> db.findMinimumValueDemo.find().sort({Value:1}).limit(1);実行すると、次のように最小値を持つドキュメントが1件だけ返されます。
{ "_id" : ObjectId("5cdfd61ebf3115999ed51209"), "Value" : 983 }補足:sort() + limit() を使うメリット
この方法は、インデックスが「Value」フィールドに設定されていれば、MongoDBがインデックスを利用してソートを行うため、大量のドキュメントがあっても高速に最小値を取得できます。また、逆に降順(-1)でソートすれば最大値も同じ要領で取得できるため、集計処理の基本パターンとして覚えておくと便利です。
-
MongoDBでfind()を使って名前からユーザーを検索する方法
MongoDBでユーザーの名前をキーにドキュメントを検索したい場合は、find()メソッドを使用します。この記事では、実際にコレクションを作成し、名前を指定してユーザーを取得する手順を順番に解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使ってサンプル用のコレクション「demo504」にドキュメントを挿入します。> db.demo504.insertOne({Name:Chris});{ acknowledged : true, insertedId : ObjectId(5e8823ee987b6e0e9d18f570) } &
-
MongoDBで価格が特定の値未満のレコードを検索する方法($lt演算子の使い方)
MongoDBで、価格(Price)が特定の値より小さいレコードを検索したい場合には、比較クエリ演算子の一つである $lt(less than)を使用します。$ltは「指定した値より小さい」ドキュメントのみを抽出するための演算子です。この記事では、実際にコレクションを作成し、$lt演算子を使って条件に合致するドキュメントを検索する手順を順番に解説します。1. テスト用コレクションの作成まず、insertOne() メソッドを使って、サンプル用のコレクション「demo728」にドキュメントを挿入します。> db.demo728.insertOne({Price:75}); { ac