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