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

MongoDB find forespørgselssammenligning med CurrentDate

Som pr. dit spørgsmål ønsker du at hente aktuelle dagsdokumenter fra en mongodb-samling . I mongoDB shell når du skriver new Date() det giver dig aktuel dato med tid, og denne værdi varierer altid, når du kører den samme new Date() så sandsynligvis er din forespørgsel sådan her :

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

Men jeg tror, ​​at denne forespørgsel returnerer de dokumenter, som vil præsenteres i din samling, men den samme aktuelle Date værdi er muligvis ikke til stede i dine dokumenter, SÅ denne sag skal du bruge følgende

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

Eller

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

I nogle tilfælde Hvis du ønsker at finde nøjagtig match med year,month,day så skal du bruge aggregation med $year,$month,$dayOfMonth i $project sådan her :

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 ovenstående aggregeringsforespørgsel returnerer de dokumenter, der matcher den aktuelle dato, såsom year,month,day af nuværende dato. Du erstatter også $match som

var currentDate = new Date()

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


  1. PyMongo max_time_ms

  2. Opdater dokument ved hjælp af resultatet af sammenkædede felter

  3. .updateOne på MongoDB virker ikke i Node.js

  4. Punktnotation vs. $elemMatch