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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *