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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *