2014-04-15 12 views
6

Mam atrybut w mojej kolekcji o nazwie dateacquired, a data jest sformatowana w następujący sposób: 2014-03-28 06:08:00.Zakres dat Zapytanie Mongo za pomocą Meteora Js

Potrzebuję wycofać wszystkie dokumenty z mojej kolekcji, które są mniejsze lub równe miesiąc temu od bieżącej daty. Po prostu nie jestem pewien, jak napisać to zapytanie.

Ktoś wie, jak zacząć coś takiego?

Odpowiedz

2

Zakładam, że te daty są przechowywane jako ciągi znaków? Można porównywać ciągi z operatorami porównania mongoDB: $gt lub $lt i działają zgodnie z oczekiwaniami. Zamierzam również użyć Sugar aby moje życie łatwiejszym (wysoce zalecane, dodać poprzez mrt add sugarjs), która daje mi Date.create i Date.format metod, które zmniejszają to do jednego-liner:

var cursorOfDocumentsSinceOneMonthAgo = yourCollection.find({ 
    dateacquired: 
     { $gt: Date.create("1 month ago").format("{yyyy}-{MM}-{dd} {hh}:{mm}:{ss}") 
     } 
    }); 
+1

Dziękuję! Pracował jak urok! – dennismonsewicz

2

moja metoda na jak meteor wiele osób zgłosiło się w ostatnich nDays:

userCountPreviousDays: function (nDays) { 
    check(nDays, Number); 

    var arr = []; 

    var now = new Date().getTime(); 
    var msInDay = 1000 * 60 * 60 * 24; 

    for (var i = 0; i < nDays; i++) { 
     arr[i] = Meteor.users.find({ 
     createdAt: { 
      $lt: new Date(now - (msInDay * i)), 
      $gt: new Date(now - (msInDay * (i+1))) 
     } 
     }).count(); 
    }; 

    return arr; 
} 

arr[i] jest jak wiele osób podpisało się i dni temu.