Mongodb: come eseguire query con un intervallo di date
Puoi utilizzare la seguente sintassi di base per eseguire query con un intervallo di date in MongoDB:
db.collection.find({ day: { $gt : ISODate(" 2020-01-21 "), $lt : ISODate(" 2020-01-24 ") } })
Questa particolare query restituirà tutti i documenti nella raccolta il cui campo “giorno” è maggiore di 2020-01-21 e minore di 2020-01-24.
Nota che $gt indica “maggiore di” e $lt indica “minore di”.
Puoi anche usare $gte per “maggiore o uguale” e $lte per “minore o uguale”.
I seguenti esempi mostrano come utilizzare nella pratica questa sintassi con una vendita in colletta con i seguenti documenti:
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 })
Esempio 1: ricerca di documenti tra due date
Possiamo utilizzare il seguente codice per trovare tutti i documenti in cui il campo “giorno” si trova tra due date specifiche:
db.sales.find({ day: { $gt : ISODate(" 2020-01-21 "), $lt : ISODate(" 2020-01-24 ") } })
Questa query restituisce i due documenti seguenti:
{ _id: ObjectId("618548bc7529c93ea0b41490"), day: 2020-01-22T00:00:00.000Z, amount: 19 } { _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 }
Esempio 2: ricerca di documenti dopo una data specifica
Possiamo utilizzare il seguente codice per trovare tutti i documenti il cui campo “giorno” è successivo a una data specifica:
db.sales.find({ day: { $gt : ISODate(" 2020-01-22 ") } })
Questa query restituisce i due documenti seguenti:
{ _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 } { _id: ObjectId("618548bc7529c93ea0b41492"), day: 2020-01-24T00:00:00.000Z, amount: 35 }
Esempio 3: ricerca di documenti prima di una data specifica
Possiamo utilizzare il seguente codice per trovare tutti i documenti il cui campo “giorno” è precedente a una data specifica:
db.sales.find({ day: { $lt : ISODate(" 2020-01-22 ") } })
Questa query restituisce i due documenti seguenti:
{ _id: ObjectId("618548bc7529c93ea0b4148e"), day: 2020-01-20T00:00:00.000Z, amount: 40 } { _id: ObjectId("618548bc7529c93ea0b4148f"), day: 2020-01-21T00:00:00.000Z, amount: 32 }
Nota : puoi trovare la documentazione completa per la funzione ISODate() qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre query comuni in MongoDB:
MongoDB: come eseguire una query con un’espressione regolare “Mi piace”.
MongoDB: come verificare se il campo contiene una stringa