ReactでMongoDBから日付や時間でフィルタリングしたデータを取得

この記事では、これまで紹介してきたReactMongoDBの技術を応用して、特定の条件を満たすデータを取得するソースコードを詳しく解説します。
実際にNode.jsで動作するReactアプリケーションで、MongoDBからデータを取得するための具体的なサンプルコードや手順を紹介します。

現在から〇時間より前のデータを取得

以下のコードは、ReactMongoDBからデータを取得し、「create_dt」が現在時刻から3時間より前のものだけを抽出するための修正を含んでいます。

const accountId = new ObjectId(user_id);
const nowDate = new Date();

// 現在時刻から3時間前の時刻を計算
const threeHoursAgo = new Date(nowDate);
threeHoursAgo.setHours(nowDate.getHours() - 3);

const pipeline = [
  {
    $match: {
      user_id: userId,
      create_dt: { $lte: threeHoursAgo }
    }
  },
  // 他のコレクションとの連携
  // ...
];

const collHistory = req.db.collection('user_history');
const userHistory = await collHistory.aggregate(pipeline).toArray();

この修正により、指定された条件(「create_dt」が現在時刻から3時間より前)を満たすドキュメントのみが抽出されます。

解説

まずはnew ObjectId(user_id)を使用してMongoDBのObjectIdを生成し、ユーザーIDをMongoDBのObjectIdとして扱えるようにします。

次にnowDateを基準にして、現在時刻から3時間前の時刻を計算しています。
最終的に$matchステージでデータを抽出する際に、3時間以内のデータを対象としています。
日時の操作については以下の参考サイトをご覧ください。

$matchステージの$lte演算子は「less than or equal」を意味し、指定された時間よりも前のデータを取得します。
MongoDBでよく使われる比較演算子はこちらをご確認ください。

最後にawaitを使用して非同期処理を行っています。
MongoDBへのクエリ実行など、非同期処理が発生する場面では必須です。

まとめ

この記事では、ReactMongoDBを使用してデータをフィルタリングする方法を解説しました。
具体的なコードや手順を通じて、理解しやすい形で紹介しました(つもりですw)。

MongoDBのアグリゲーションパイプラインを使用してフィルタリング
  • ○時間前を計算
  • $matchステージの$lte演算子を使用
  • awaitを使用した非同期処理でデータを取得

以上、これでデータを効率的に取得する方法について理解が深まったと思います。


Amazonベストセラー

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA