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

【MongoDB】日付レコードを基準にコレクションから最新のデータを取得する方法

はじめに

MongoDBで日付レコードをもとにコレクションから最新のデータセットを取得するには、sort()メソッドに降順を意味する「-1」を指定します。さらに、最新の1件(単一ドキュメント)だけを取得したい場合は、limit(1)を組み合わせることで簡単に実現できます。

本記事では、実際にサンプルコレクションを作成しながら、具体的な手順をわかりやすく解説していきます。

サンプルコレクションの作成

まずは、ドキュメントを格納するコレクションを作成しましょう。以下のコマンドを実行して、「PurchaseDate(購入日)」と「ProductName(商品名)」を持つドキュメントを4件挿入します。

> db.demo521.insertOne({"PurchaseDate":new ISODate("2019-01-10"),"ProductName":"Product-1"});{   "acknowledged" : true, "insertedId" : ObjectId("5e89a1acb3fbf26334ef6117")}> db.demo521.insertOne({"PurchaseDate":new ISODate("2020-04-05"),"ProductName":"Product-10"});{   "acknowledged" : true, "insertedId" : ObjectId("5e89a1b9b3fbf26334ef6118")}> db.demo521.insertOne({"PurchaseDate":new ISODate("2010-05-08"),"ProductName":"Product-4"});{   "acknowledged" : true, "insertedId" : ObjectId("5e89a1c8b3fbf26334ef6119")}> db.demo521.insertOne({"PurchaseDate":new ISODate("2020-02-21"),"ProductName":"Product-3"});{   "acknowledged" : true, "insertedId" : ObjectId("5e89a1d7b3fbf26334ef611a")}

コレクション内の全ドキュメントを確認する

find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。

> db.demo521.find();

上記のコマンドを実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e89a1acb3fbf26334ef6117"), "PurchaseDate" : ISODate("2019-01-10T00:00:00Z"), "ProductName" : "Product-1" }{ "_id" : ObjectId("5e89a1b9b3fbf26334ef6118"), "PurchaseDate" : ISODate("2020-04-05T00:00:00Z"), "ProductName" : "Product-10" }{ "_id" : ObjectId("5e89a1c8b3fbf26334ef6119"), "PurchaseDate" : ISODate("2010-05-08T00:00:00Z"), "ProductName" : "Product-4" }{ "_id" : ObjectId("5e89a1d7b3fbf26334ef611a"), "PurchaseDate" : ISODate("2020-02-21T00:00:00Z"), "ProductName" : "Product-3" }

日付を基準に最新データを取得するクエリ

それでは、日付フィールドを基準に最新のデータを取得するクエリを見ていきましょう。PurchaseDateフィールドに対して降順ソート(-1)を行い、limit(1)で先頭の1件のみを取得します。

> db.demo521.find().sort({"PurchaseDate": -1}).limit(1);

このクエリを実行すると、次の出力が得られます。

{ "_id" : ObjectId("5e89a1b9b3fbf26334ef6118"), "PurchaseDate" : ISODate("2020-04-05T00:00:00Z"), "ProductName" : "Product-10" }

ご覧のとおり、最も新しい購入日である「2020年4月5日」のドキュメントが正しく取得できています。

まとめ

MongoDBで日付を基準に最新のドキュメントを取得するには、find().sort({フィールド名: -1}).limit(1)という組み合わせが有効です。逆に、ソート順を昇順(1)に変更すれば、最も古いデータを取得することも可能です。ログ分析や履歴管理など、最新レコードの参照が必要な場面でぜひ活用してみてください。

  1. MySQLで現在日付から過去2日間のレコードを取得する方法

    MySQLにおいて、現在の日付を基準に過去2日間のレコードを抽出したい場合、DATE_SUB()関数を使用します。さらに、NOW()関数を組み合わせることで、現在の日付・時刻を動的に取得できます。基本構文過去2日間のレコードを取得するための基本的なSQL構文は以下の通りです。SELECT * FROM yourTableNameWHERE yourDateTimeColumnName BETWEEN DATE_SUB(DATE(NOW()), INTERVAL 2 DAY)AND DATE_SUB(DATE(NOW()), INTERVAL 1 DAY);実例で確認しようここからは、実際にテー

  2. JavaでMongoDBコレクションからデータを取得する際にレコード数を制限する方法

    MongoDBのコレクションからレコードを取得する際、limit()メソッドを使用することで、結果として返されるレコードの件数を制限できます。大量のデータが格納されたコレクションから必要な分だけ効率よく取り出したい場合に非常に便利な機能です。 limit()メソッドの基本構文 db.COLLECTION_NAME.find().limit(取得したいレコード数) シェル上では上記のように記述します。JavaのMongoDBドライバ(ライブラリ)にも同名のlimit()メソッドが用意されており、find()メソッドの実行結果に対して、必要なレコード数を表す整数値を引数として渡して呼び出すことで、