MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB trova il confronto delle query con CurrentDate

In base alla tua domanda vuoi recuperare i documenti del giorno corrente da una raccolta mongodb . Nella shell mongoDB quando digiti new Date() ti dà la data corrente con l'ora e questo valore varia sempre quando esegui lo stesso new Date() quindi probabilmente la tua domanda come questa:

db.collectionName.find({"start_date":new Date()}).pretty()

Ma penso che questa query restituisca quei documenti che presenteranno nella tua raccolta ma la stessa Date corrente il valore potrebbe non essere presente nei tuoi documenti, quindi in questo caso dovresti usare il seguente

db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()

Oppure

db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()

In alcuni casi Se vuoi trovare una corrispondenza esatta con year,month,day quindi dovresti usare aggregazione con $year,$month,$dayOfMonth in $project così :

db.collectionName.aggregate({
  "$project": {
    "year": {
      "$year": "$date"
    },
    "month": {
      "$month": "$date"
    },
    "day": {
      "$dayOfMonth": "$date"
    }
  }
}, {
  "$match": {
    "year": new Date().getFullYear(),
    "month": new Date().getMonth() + 1, //because January starts with 0
    "day": new Date().getDate()
  }
})

Nella precedente query di aggregazione verranno restituiti quei documenti che corrispondono alla data corrente come year,month,day di data corrente. Sostituisci anche $match come

var currentDate = new Date()

 {
  "$match": {
    "year": currentDate.getFullYear(),
    "month": currentDate.getMonth() + 1, //because January starts with 0
    "day": currentDate.getDate()
  }
}