この記事では、これまで紹介してきたReactとMongoDBの技術を応用して、特定の条件を満たすデータを取得するソースコードを詳しく解説します。
実際にNode.jsで動作するReactアプリケーションで、MongoDBからデータを取得するための具体的なサンプルコードや手順を紹介します。
現在から〇時間より前のデータを取得
以下のコードは、ReactでMongoDBからデータを取得し、「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へのクエリ実行など、非同期処理が発生する場面では必須です。
まとめ
この記事では、ReactとMongoDBを使用してデータをフィルタリングする方法を解説しました。
具体的なコードや手順を通じて、理解しやすい形で紹介しました(つもりですw)。
- ○時間前を計算
$match
ステージの$lte
演算子を使用await
を使用した非同期処理でデータを取得
以上、これでデータを効率的に取得する方法について理解が深まったと思います。
- Original:https://minory.org/mongodb-filtering.html
- Source:minory
- Author:管理者