MongoDBで降順にデータを並べ替える方法をわかりやすく解説
MongoDBで取得したドキュメントを並べ替えたい場面は多くあります。昇順・降順のどちらでソートするかは、sort()メソッドに指定する値によって決まります。この記事では、実際のコード例を使いながら、MongoDBで降順ソートを実行する方法を詳しく解説します。
sort()メソッドの基本構文
MongoDBのsort()メソッドでは、フィールド名と並び順を表す数値を組み合わせて指定します。
- 1 を指定 → 昇順(小さい順)
- -1 を指定 → 降順(大きい順)
昇順で並べ替える場合の構文は以下の通りです。
db.yourCollectionName.find().sort({yourField:1});
降順にしたい場合は、値を -1 に変更します。
db.yourCollectionName.find().sort({yourField:-1});
サンプルコレクションの作成
それでは、実際に動きを確認するために、ドキュメントを含むコレクションを作成してみましょう。ここでは「sortingDemo」というコレクションに、数値を持つドキュメントを複数件挿入します。
> db.sortingDemo.insertOne({"Value":100});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e2ed3c9d04998abf006")
}
> db.sortingDemo.insertOne({"Value":1});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e31d3c9d04998abf007")
}
> db.sortingDemo.insertOne({"Value":150});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e34d3c9d04998abf008")
}
> db.sortingDemo.insertOne({"Value":250});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e37d3c9d04998abf009")
}
> db.sortingDemo.insertOne({"Value":5});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e3bd3c9d04998abf00a")
}
> db.sortingDemo.insertOne({"Value":199});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e3ed3c9d04998abf00b")
}
> db.sortingDemo.insertOne({"Value":243});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e44d3c9d04998abf00c")
}
> db.sortingDemo.insertOne({"Value":290});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e48d3c9d04998abf00d")
}
登録したドキュメントの確認
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。見やすく整形したい場合はpretty()を付けて実行します。
> db.sortingDemo.find().pretty();
実行結果は以下のようになります。挿入された順番のまま表示されていることが分かります。
{ "_id" : ObjectId("5c8f8e2ed3c9d04998abf006"), "Value" : 100 }
{ "_id" : ObjectId("5c8f8e31d3c9d04998abf007"), "Value" : 1 }
{ "_id" : ObjectId("5c8f8e34d3c9d04998abf008"), "Value" : 150 }
{ "_id" : ObjectId("5c8f8e37d3c9d04998abf009"), "Value" : 250 }
{ "_id" : ObjectId("5c8f8e3bd3c9d04998abf00a"), "Value" : 5 }
{ "_id" : ObjectId("5c8f8e3ed3c9d04998abf00b"), "Value" : 199 }
{ "_id" : ObjectId("5c8f8e44d3c9d04998abf00c"), "Value" : 243 }
{ "_id" : ObjectId("5c8f8e48d3c9d04998abf00d"), "Value" : 290 }
降順で並べ替えて結果を取得する
いよいよ本題です。「Value」フィールドを基準に降順(大きい値から小さい値の順)で並べ替えるには、sort({Value:-1})のように指定します。
> db.sortingDemo.find().sort({Value:-1});
実行すると、以下のように最大値の290から最小値の1まで、大きい順に整列された結果が得られます。
{ "_id" : ObjectId("5c8f8e48d3c9d04998abf00d"), "Value" : 290 }
{ "_id" : ObjectId("5c8f8e37d3c9d04998abf009"), "Value" : 250 }
{ "_id" : ObjectId("5c8f8e44d3c9d04998abf00c"), "Value" : 243 }
{ "_id" : ObjectId("5c8f8e3ed3c9d04998abf00b"), "Value" : 199 }
{ "_id" : ObjectId("5c8f8e34d3c9d04998abf008"), "Value" : 150 }
{ "_id" : ObjectId("5c8f8e2ed3c9d04998abf006"), "Value" : 100 }
{ "_id" : ObjectId("5c8f8e3bd3c9d04998abf00a"), "Value" : 5 }
{ "_id" : ObjectId("5c8f8e31d3c9d04998abf007"), "Value" : 1 }
まとめ
MongoDBで降順ソートを行うには、find()の後にsort({フィールド名: -1})を続けて記述するだけです。逆に昇順にしたい場合は1を指定します。また、複数のフィールドを組み合わせたソートも可能で、その場合はsort({fieldA: -1, fieldB: 1})のように記述します。大量のデータを扱う際は、ソート対象のフィールドにインデックスを作成しておくことで、パフォーマンスを大幅に向上させることができます。ぜひ実際の開発でも活用してみてください。
-
【MySQL】FIELD()関数を使ってフィールド値によるカスタムソートを実現する方法
MySQLでカスタムソートを行うには?MySQLでフィールド(列)の値に基づいた独自の並び順(カスタムソート)を実現したい場合は、ORDER BY句とFIELD()関数を組み合わせて使用します。FIELD()関数は、指定した値がリスト内のどの位置にあるかを返すため、その結果をもとにソート順を自由に制御できます。ここでは、実際のサンプルを通じて具体的な手順を見ていきましょう。1. サンプルテーブルを作成するまず、テスト用のテーブルを作成します。以下のクエリを実行してください。mysql> create table DemoTable (StudentId int); Query OK, 0
-
C#で配列を降順に並べ替える方法を解説
C#で配列を降順(大きい値から小さい値の順)に並べ替えるには、Array.Sort()メソッドとArray.Reverse()メソッドを組み合わせるのが最も基本的な方法です。まず、次のようなソート前の配列を用意します。 int[] list = {98, 23, 97, 36, 77}; 手順1:Array.Sort()で昇順にソートする 最初に、Array.Sort()メソッドを使って配列を昇順(小さい値から大きい値の順)に並べ替えます。 Array.Sort(list); この時点で、配列の要素は「23 36 77 97 98」のように昇順に整列しています。 手順2:Array.Rever