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
