MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB encontra comparação de consulta com CurrentDate


De acordo com sua pergunta você deseja buscar documentos atuais de uma coleção mongodb . No shell do mongoDB quando você digita new Date() ele fornece a data atual com a hora e esse valor sempre varia quando você executa o mesmo new Date() então provavelmente sua consulta é assim:
db.collectionName.find({"start_date":new Date()}).pretty()

Mas, acho que essa consulta retorna os documentos que estarão presentes em sua coleção, mas com a mesma Date atual valor pode não estar presente em seus documentos, então neste caso você deve usar o seguinte
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()

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

Em alguns casos, se você quiser encontrar uma correspondência exata com year,month,day então você deve usar agregação com $year,$month,$dayOfMonth in $project assim :
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()
  }
})

Na consulta de agregação acima, retornará os documentos que correspondem à data atual, como year,month,day da data atual. Além disso, você substitui $match Como
var currentDate = new Date()

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