MongoDBでタイムスタンプの降順にデータを並べ替える方法
MongoDBでタイムスタンプを基準にデータを並べ替えたい場合には、sort()メソッドを使用します。降順(新しい日付が先頭)で並べ替えるには、ソート条件として -1 を指定します。
ここでは、実際にコレクションを作成してドキュメントを挿入し、タイムスタンプの降順に並べ替える手順を順番に見ていきましょう。
サンプルデータの作成
まず、insertOne()メソッドを使って、タイムスタンプを持つドキュメントを複数件コレクションに挿入します。
> db.demo737.insertOne({"timestamp" : new ISODate("2020-04-01" )});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead682157bb72a10bcf065c")
}
> db.demo737.insertOne({"timestamp" : new ISODate("2020-10-31" )});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead682757bb72a10bcf065d")
}
> db.demo737.insertOne({"timestamp" : new ISODate("2020-05-02" )});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead682a57bb72a10bcf065e")
}この例では、「2020-04-01」「2020-10-31」「2020-05-02」という3つの日付を持つドキュメントを登録しました。意図的にバラバラの順序で挿入している点に注目してください。
登録されたドキュメントの確認
次に、find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo737.find();
実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5ead682157bb72a10bcf065c"), "timestamp" : ISODate("2020-04-01T00:00:00Z") }
{ "_id" : ObjectId("5ead682757bb72a10bcf065d"), "timestamp" : ISODate("2020-10-31T00:00:00Z") }
{ "_id" : ObjectId("5ead682a57bb72a10bcf065e"), "timestamp" : ISODate("2020-05-02T00:00:00Z") }このように、find()だけでは挿入された順序のまま表示され、日付順には並んでいません。
タイムスタンプで降順に並べ替える
タイムスタンプの降順(新しいものから古いものへ)で並べ替えるには、以下のように sort() に {"timestamp": -1} を指定します。
> db.demo737.find().sort({"timestamp":-1});実行結果は次のとおりです。
{ "_id" : ObjectId("5ead682757bb72a10bcf065d"), "timestamp" : ISODate("2020-10-31T00:00:00Z") }
{ "_id" : ObjectId("5ead682a57bb72a10bcf065e"), "timestamp" : ISODate("2020-05-02T00:00:00Z") }
{ "_id" : ObjectId("5ead682157bb72a10bcf065c"), "timestamp" : ISODate("2020-04-01T00:00:00Z") }最新の日付である「2020-10-31」が先頭に、最も古い「2020-04-01」が最後に配置され、正しく降順で並べ替えられていることが確認できます。
sort()の指定値について
sort()で指定する値の意味は以下のとおりです。
- -1:降順(大きい値・新しい日付が先頭)
- 1:昇順(小さい値・古い日付が先頭)
たとえば古い順に表示したい場合は、db.demo737.find().sort({"timestamp":1}) のように指定を変更するだけで対応できます。
パフォーマンスに関する補足
ドキュメント数が多いコレクションに対して頻繁にソートを行う場合は、対象フィールドにインデックスを作成しておくことをおすすめします。次のようにインデックスを作成すると、ソート処理のパフォーマンスが大幅に向上します。
> db.demo737.createIndex({"timestamp": -1});このように、MongoDBでは sort() メソッドを使うだけで簡単にタイムスタンプによる並べ替えが可能です。ログデータや投稿日時などの時系列データを扱う際に、ぜひ活用してください。
-
MongoDBで昇順にデータを並べ替える方法【sort()の使い方を解説】
MongoDBで昇順(小さい値から大きい値へ)にデータを並べ替えるには、find()メソッドと組み合わせてsort()メソッドを使用します。昇順で並べ替える場合は、対象のフィールド名に対して「1」を指定するのが基本構文です。db.yourCollectionName.find().sort({yourField: 1});なお、降順(大きい値から小さい値へ)で並べ替えたい場合は、「-1」を指定します。サンプルコレクションの作成実際の動作を確認するため、まずはドキュメントを含むコレクションを作成しましょう。以下のクエリでは、「sortingDemo」というコレクションに数値を持つドキュメントを順
-
MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方
MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、