Mongodb: query's uitvoeren met een datumbereik
U kunt de volgende basissyntaxis gebruiken om query’s uit te voeren op een datumbereik in MongoDB:
db.collection.find({ day: { $gt : ISODate(" 2020-01-21 "), $lt : ISODate(" 2020-01-24 ") } })
Deze specifieke zoekopdracht retourneert alle documenten in de collectie waarvan het veld ‚dag‘ groter is dan 21-01-2020 en kleiner dan 24-01-2020.
Merk op dat $gt „groter dan“ aangeeft en $lt „kleiner dan“.
Je kunt ook $gte gebruiken voor „groter dan of gelijk“ en $lte voor „kleiner dan of gelijk“.
De volgende voorbeelden laten zien hoe u deze syntaxis in de praktijk kunt gebruiken bij een collectieverkoop met de volgende documenten:
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 })
Voorbeeld 1: Zoeken naar documenten tussen twee datums
We kunnen de volgende code gebruiken om alle documenten te vinden waarbij het veld “dag” zich tussen twee specifieke datums bevindt:
db.sales.find({ day: { $gt : ISODate(" 2020-01-21 "), $lt : ISODate(" 2020-01-24 ") } })
Deze query retourneert de volgende twee documenten:
{ _id: ObjectId("618548bc7529c93ea0b41490"), day: 2020-01-22T00:00:00.000Z, amount: 19 } { _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 }
Voorbeeld 2: Zoeken naar documenten na een specifieke datum
We kunnen de volgende code gebruiken om alle documenten te vinden waarvan het veld „dag“ na een specifieke datum ligt:
db.sales.find({ day: { $gt : ISODate(" 2020-01-22 ") } })
Deze query retourneert de volgende twee documenten:
{ _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 } { _id: ObjectId("618548bc7529c93ea0b41492"), day: 2020-01-24T00:00:00.000Z, amount: 35 }
Voorbeeld 3: Zoeken naar documenten van vóór een specifieke datum
We kunnen de volgende code gebruiken om alle documenten te vinden waarvan het veld „dag“ vóór een specifieke datum ligt:
db.sales.find({ day: { $lt : ISODate(" 2020-01-22 ") } })
Deze query retourneert de volgende twee documenten:
{ _id: ObjectId("618548bc7529c93ea0b4148e"), day: 2020-01-20T00:00:00.000Z, amount: 40 } { _id: ObjectId("618548bc7529c93ea0b4148f"), day: 2020-01-21T00:00:00.000Z, amount: 32 }
Opmerking : u kunt de volledige documentatie voor de ISODate()- functie hier vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende query’s in MongoDB kunt uitvoeren:
MongoDB: Query’s uitvoeren met een reguliere expressie „Vind ik leuk“.
MongoDB: Hoe u kunt controleren of een veld een string bevat