MongoDB : Comment interroger avec une plage de dates
Vous pouvez utiliser la syntaxe de base suivante pour effectuer une requête avec une plage de dates dans MongoDB :
db.collection.find({ day: { $gt: ISODate("2020-01-21"), $lt: ISODate("2020-01-24") } })
Cette requête particulière renverra tous les documents de la collection dont le champ « jour » est supérieur au 2020-01-21 et inférieur au 2020-01-24.
Notez que $gt indique « supérieur à » et $lt indique « inférieur à ».
Vous pouvez également utiliser $gte pour « supérieur ou égal » et $lte pour « inférieur ou égal ».
Les exemples suivants montrent comment utiliser cette syntaxe en pratique avec une vente de collection avec les documents suivants :
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})
Exemple 1 : Rechercher des documents entre deux dates
Nous pouvons utiliser le code suivant pour retrouver tous les documents où le champ « jour » est compris entre deux dates précises :
db.sales.find({ day: { $gt: ISODate("2020-01-21"), $lt: ISODate("2020-01-24") } })
Cette requête renvoie les deux documents suivants :
{ _id: ObjectId("618548bc7529c93ea0b41490"), day: 2020-01-22T00:00:00.000Z, amount: 19 } { _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 }
Exemple 2 : Rechercher des documents après une date spécifique
Nous pouvons utiliser le code suivant pour rechercher tous les documents dont le champ « jour » est postérieur à une date précise :
db.sales.find({ day: { $gt: ISODate("2020-01-22") } })
Cette requête renvoie les deux documents suivants :
{ _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 } { _id: ObjectId("618548bc7529c93ea0b41492"), day: 2020-01-24T00:00:00.000Z, amount: 35 }
Exemple 3 : Rechercher des documents avant une date spécifique
Nous pouvons utiliser le code suivant pour rechercher tous les documents dont le champ « jour » est antérieur à une date précise :
db.sales.find({ day: { $lt: ISODate("2020-01-22") } })
Cette requête renvoie les deux documents suivants :
{ _id: ObjectId("618548bc7529c93ea0b4148e"), day: 2020-01-20T00:00:00.000Z, amount: 40 } { _id: ObjectId("618548bc7529c93ea0b4148f"), day: 2020-01-21T00:00:00.000Z, amount: 32 }
Remarque : Vous pouvez trouver la documentation complète de la fonction ISODate() ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres requêtes courantes dans MongoDB :
MongoDB : Comment interroger avec une expression régulière « Like »
MongoDB : Comment vérifier si le champ contient une chaîne