Son 5 dakika içinde tüm yeni şeyleri almak istiyorsanız, bazı hesaplamalar yapmanız gerekir, ancak zor değil ...
İlk olarak, eşleştirmek istediğiniz mülk üzerinde bir dizin oluşturun (azalanlar için sıralama yönünü -1 ve artanlar için 1'i dahil edin)
db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
Sonra son 5 dakika içinde oluşturulan belgeleri sorgulayın (60 saniye * 5 dakika) ... çünkü javascript'in .getTime()milisaniye döndürdüğü için, belgeyi girdi olarak kullanmadan önce 1000 ile mulitplynew Date() yapıcı .
db.things.find({
createdAt: {
$gte: new Date(new Date().getTime()-60*5*1000).toISOString()
}
})
.count()
İçin açıklama new Date(new Date().getTime()-60*5*1000).toISOString() aşağıdaki gibidir:
Önce "5 dakika önce" hesaplıyoruz:
new Date().getTime() bize milisaniye cinsinden şimdiki zamanı verir
- Bundan 5 dakika (ms cinsinden ) çıkarmak istiyoruz:
5*60*1000- Sadece 60saniyelerle çarpıyorum, bu yüzden değiştirilmesi kolay. Sadece değiştirebilir 5için 120ben 2 saat (120 dakika) istiyorum.
new Date().getTime()-60*5*1000bize verir 1484383878676(5 dakika önce ms)
Şimdi new Date()MongoDB zaman damgalarının gerektirdiği ISO dizesi formatını almak için bunu bir kurucuya beslememiz gerekiyor.
{ $gte: new Date(resultFromAbove).toISOString() } (mongodb .find () sorgusu)
- Değişkenlere sahip olamadığımız için hepsini tek seferde yaparız:
new Date(new Date().getTime()-60*5*1000)
- ... sonra ISO dizesine dönüştürün:
.toISOString()
new Date(new Date().getTime()-60*5*1000).toISOString() bize verir 2017-01-14T08:53:17.586Z
Elbette bu, node-mongodb-native sürücüsünü kullanıyorsanız değişkenlerle biraz daha kolaydır, ancak bu genellikle bir şeyleri kontrol etmek için kullandığım mongo kabuğunda çalışır.