Mongodb: 日付範囲を指定してクエリを実行する方法
次の基本構文を使用して、MongoDB で日付範囲を指定してクエリを実行できます。
db.collection.find({ day: { $gt : ISODate(" 2020-01-21 "), $lt : ISODate(" 2020-01-24 ") } })
この特定のクエリは、コレクション内の「日」フィールドが 2020-01-21 より大きく、2020-01-24 より小さいすべてのドキュメントを返します。
$gt は「より大きい」を示し、 $lt は「より小さい」を示すことに注意してください。
「以上」には$gte を、「以下」には$lteを使用することもできます。
次の例は、次のドキュメントを使用したコレクション販売で実際にこの構文を使用する方法を示しています。
db.sales.insertOne({day: new Date(" 2020-01-20 "), amount: 40 }) db.sales.insertOne({day: new Date(" 2020-01-21 "), amount: 32 }) db.sales.insertOne({day: new Date(" 2020-01-22 "), amount: 19 }) db.sales.insertOne({day: new Date(" 2020-01-23 "), amount: 29 }) db.sales.insertOne({day: new Date(" 2020-01-24 "), amount: 35 })
例 1: 2 つの日付間のドキュメントを検索する
次のコードを使用すると、「日」フィールドが 2 つの特定の日付の間にあるすべてのドキュメントを検索できます。
db.sales.find({ day: { $gt : ISODate(" 2020-01-21 "), $lt : ISODate(" 2020-01-24 ") } })
このクエリは、次の 2 つのドキュメントを返します。
{ _id: ObjectId("618548bc7529c93ea0b41490"), day: 2020-01-22T00:00:00.000Z, amount: 19 } { _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 }
例 2: 特定の日付以降のドキュメントを検索する
次のコードを使用すると、「日」フィールドが特定の日付以降であるすべてのドキュメントを検索できます。
db.sales.find({ day: { $gt : ISODate(" 2020-01-22 ") } })
このクエリは、次の 2 つのドキュメントを返します。
{ _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 } { _id: ObjectId("618548bc7529c93ea0b41492"), day: 2020-01-24T00:00:00.000Z, amount: 35 }
例 3: 特定の日付より前のドキュメントを検索する
次のコードを使用すると、「日」フィールドが特定の日付より前のすべてのドキュメントを検索できます。
db.sales.find({ day: { $lt : ISODate(" 2020-01-22 ") } })
このクエリは、次の 2 つのドキュメントを返します。
{ _id: ObjectId("618548bc7529c93ea0b4148e"), day: 2020-01-20T00:00:00.000Z, amount: 40 } { _id: ObjectId("618548bc7529c93ea0b4148f"), day: 2020-01-21T00:00:00.000Z, amount: 32 }
注: ISODate()関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、MongoDB で他の一般的なクエリを実行する方法について説明します。
MongoDB: 「Like」正規表現を使用してクエリを実行する方法
MongoDB: フィールドに文字列が含まれているかどうかを確認する方法