MongoDBにおける日付の比較
MongoDBでは、日付を扱う際にさまざまな演算子や機能を使用して、日付の比較や範囲検索を行うことができます。以下に、日付に関する主要な演算子とその使用例を示します。
**** 日付の比較演算子
-
$eq: 指定した日付と等しい値と一致します。
-
$ne: 指定した日付と等しくないすべての値と一致します。
-
$gt: 指定した日付を超える値と一致します。
-
$gte: 指定した日付以上の値と一致します。
-
$lt: 指定した日付未満の値と一致します。
-
$lte: 指定した日付以下の値と一致します。
-
$in: 配列内の指定した日付のいずれかと一致します。
-
$nin: 配列内の指定した日付のいずれとも一致しません。
日付範囲の検索
MongoDBでは、特定の日付範囲内のドキュメントを検索するために、上記の演算子を組み合わせて使用することができます。以下は、特定の日付範囲内でドキュメントを取得する例です。
// 2022年1月1日から2022年2月10日の間に作成されたドキュメントを検索
db.products.find({
createddate: {
$gt: ISODate("2022-01-01"),
$lt: ISODate("2022-02-10")
}
});
このクエリは、createddate
フィールドが指定された範囲内にあるドキュメントを取得します。
月や年での比較
特定の月や年でドキュメントを検索する場合は、MongoDBの集約パイプラインを使用することが効果的です。以下は、特定の月に更新されたドキュメントを検索する例です。
// 3月に更新された製品を検索
db.products.aggregate([
{ $addFields: { month: { $month: "$updateddate" } } },
{ $match: { month: 3 } }
]);
また、特定の年でフィルタリングする場合は、次のように$year
演算子を使用します。
// 2022年に提出された料金書類を検索
db.student.find({
$expr: {
$eq: [{ $year: "$FeeSubmission" }, 2022]
}
});
日付オブジェクトの操作
MongoDBでは、ISODate()関数を使用して日付オブジェクトを作成し、その後さまざまな演算子で操作できます。これにより、データベース内の日付データを柔軟かつ効率的に扱うことが可能です。