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

MongoDBでデータをソートする方法|sort()メソッドの使い方を実例付きで解説

MongoDBでデータをソート(並べ替え)するには、sort()メソッドを使用します。この記事では、昇順・降順それぞれのソート方法を、実際に動作するサンプルコードとともに初心者にもわかりやすく解説します。

sort()メソッドの基本構文

ケース1:昇順でソートする

昇順(小さい値から大きい値へ)で並べ替える場合は、フィールド名に対して「1」を指定します。基本構文は以下の通りです。

db.yourCollectionName.find().sort({yourField:1});

ケース2:降順でソートする

降順(大きい値から小さい値へ)で並べ替える場合は、フィールド名に対して「-1」を指定します。基本構文は以下の通りです。

db.yourCollectionName.find().sort({yourField:-1});

サンプルコレクションを作成して動作を確認しよう

それでは、実際の動作を確認するために、ドキュメントを格納したコレクションを作成します。ここでは「sortingDemo」という名前のコレクションに、数値データ(Value)を持つドキュメントを8件挿入していきます。

> 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()メソッドですべてのドキュメントを表示する

まず、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 }

このように、挿入した順番のまま表示されていることがわかります。

ケース1:昇順でソートする実行例

ここでは、「Value」フィールドを基準に昇順でソートしてみます。クエリは以下の通りです。

> db.sortingDemo.find().sort({Value:1});

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

{ "_id" : ObjectId("5c8f8e31d3c9d04998abf007"), "Value" : 1 }
{ "_id" : ObjectId("5c8f8e3bd3c9d04998abf00a"), "Value" : 5 }
{ "_id" : ObjectId("5c8f8e2ed3c9d04998abf006"), "Value" : 100 }
{ "_id" : ObjectId("5c8f8e34d3c9d04998abf008"), "Value" : 150 }
{ "_id" : ObjectId("5c8f8e3ed3c9d04998abf00b"), "Value" : 199 }
{ "_id" : ObjectId("5c8f8e44d3c9d04998abf00c"), "Value" : 243 }
{ "_id" : ObjectId("5c8f8e37d3c9d04998abf009"), "Value" : 250 }
{ "_id" : ObjectId("5c8f8e48d3c9d04998abf00d"), "Value" : 290 }

最小値の「1」から最大値の「290」まで、小さい順に正しく並び替えられていることが確認できます。

ケース2:降順でソートする実行例

次に、同じ「Value」フィールドを基準に降順でソートしてみます。クエリは以下の通りです。

> db.sortingDemo.find().sort({Value:-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 }

今度は最大値の「290」から最小値の「1」まで、大きい順に並んでいます。

まとめ

MongoDBでのソートは、find()メソッドにsort()を組み合わせるだけで簡単に実現できます。ポイントは以下の2つです。

  • 昇順にしたい場合 → { フィールド名: 1 } を指定
  • 降順にしたい場合 → { フィールド名: -1 } を指定

なお、sort()では複数のフィールドを組み合わせたソート(例:{FieldA:1, FieldB:-1})も可能です。大量のデータを扱う際は、ソート対象のフィールドにインデックスを作成しておくとパフォーマンスが大幅に向上するので、合わせて検討してみてください。

  1. MongoDBで昇順にデータを並べ替える方法【sort()の使い方を解説】

    MongoDBで昇順(小さい値から大きい値へ)にデータを並べ替えるには、find()メソッドと組み合わせてsort()メソッドを使用します。昇順で並べ替える場合は、対象のフィールド名に対して「1」を指定するのが基本構文です。db.yourCollectionName.find().sort({yourField: 1});なお、降順(大きい値から小さい値へ)で並べ替えたい場合は、「-1」を指定します。サンプルコレクションの作成実際の動作を確認するため、まずはドキュメントを含むコレクションを作成しましょう。以下のクエリでは、「sortingDemo」というコレクションに数値を持つドキュメントを順

  2. MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方

    MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、