sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB hitta frågejämförelse med CurrentDate

Enligt din fråga vill du hämta aktuella dokument från en mongodb-samling . I mongoDB-skalet när du skriver new Date() det ger dig aktuellt datum med tid och detta värde varierar alltid när du kör samma new Date() så förmodligen är din fråga så här :

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

Men jag tror att den här frågan returnerar de dokument som kommer att presenteras i din samling men samma nuvarande Date värde kanske inte finns i dina dokument SÅ det här fallet bör du använda följande

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

Eller

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

I vissa fall Om du vill hitta exakt matchning med year,month,day då bör du använda aggregation med $year,$month,$dayOfMonth i $project så här :

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()
  }
})

I ovanstående aggregeringsfråga returnerar de dokument som matchar aktuellt datum som year,month,day aktuellt datum. Du ersätter också $match som

var currentDate = new Date()

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


  1. mongodb installation - krav?

  2. MongoDB dropIndex kommando

  3. Hur man implementerar transaktion med återställning i Redis

  4. Vad är skillnaden mellan findOneAndUpdate och findOneAndReplace?