sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB najít porovnání dotazu s CurrentDate

Podle vaší otázky chcete načíst dokumenty aktuálního dne ze sbírky mongodb . V prostředí mongoDB, když napíšete new Date() dává vám aktuální datum s časem a tato hodnota se vždy mění, když spustíte stejné new Date() takže váš dotaz pravděpodobně vypadá takto:

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

Ale myslím si, že tento dotaz vrátí ty dokumenty, které budou ve vaší sbírce, ale stejné aktuální Date hodnota nemusí být ve vašich dokumentech uvedena, takže v tomto případě byste měli použít následující

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

Nebo

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

V některých případech Pokud chcete najít přesnou shodu s year,month,day pak byste měli použít agregace s $year,$month,$dayOfMonth v $project takhle :

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

Ve výše uvedeném agregačním dotazu se vrátí ty dokumenty, které odpovídají aktuálnímu datu jako year,month,day aktuálního data. Také nahradíte $match jako

var currentDate = new Date()

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


  1. Proč je výkon Redis SET lepší než GET?

  2. MongoDB (server v 2.6.7) s C# ovladačem 2.0:Jak získat výsledek z InsertOneAsync

  3. React Native - nelze importovat mongoose na frontend (ale funguje to z backendu)

  4. MongoDB - Logické NEBO při hledání slov a frází pomocí fulltextového vyhledávání