この章では、MongoDBでクエリ結果を並べ替える方法について紹介します。これは、MySQLのORDER BY句の使い方に類似しています。MongoDBにおけるページネーションは、Cursorカーソルのsort機能を使用して実現されます。

テストデータの準備

restaurantsコレクションにいくつかのレコードを挿入します

db.restaurants.insertMany( [
   { "_id" : 1, "name" : "Central Park Cafe", "borough" : "マンハッタン"},
   { "_id" : 2, "name" : "Rock A Feller Bar and Grill", "borough" : "クイーンズ"},
   { "_id" : 3, "name" : "Empire State Pub", "borough" : "ブルックリン"},
   { "_id" : 4, "name" : "Stan's Pizzaria", "borough" : "マンハッタン"},
   { "_id" : 5, "name" : "Jane's Deli", "borough" : "ブルックリン"},
] );

結果の並べ替え

db.restaurants.find({}).sort({_id:1})

説明:

  • sort関数を使用して並べ替えのフィールドを設定します。
  • すべてのデータをクエリし、_idで昇順に並べ替えます。

sort関数パラメータの形式:

<field>: 1 もしくは -1

説明:

  • 1は昇順を表します。
  • -1は降順を表します。

ページネーションとの組み合わせ

db.restaurants.find({}).limit(2).skip(2).sort({_id:-1})

説明:

  • すべてのデータをクエリし、最大2件のレコードを返し、2件のレコードをスキップし、_idで降順に並べ替えます。