2014-06-11 3 views
3

Dans Meteor, je crée un document gagnant ainsi:Meteorjs MongoDB comment interroger une date avec momentjs

var winner = { 
       participant_id: array[randomIndex]["_id"], //don't worry about the array[randomIndex] 
       creation_date: new Date() 
      }; 
id = Winners.insert(winner); 

Plus tard, je veux savoir combien de gagnants que j'ai aujourd'hui. J'ai essayé de nombreuses façons, mais je n'ai pas réussi à obtenir le bon résultat.

La dernière chose que j'ai essayé est celui-ci:

Winners.find({creation_date: {"$gte": moment().startOf('day'), "$lt": moment().add('days',1)}}).count(); 

Mais le résultat est toujours égal à zéro.

Je suppose que la raison en est que moment(). StartOf ('day') n'est pas un objet date mais je n'ai aucune idée de comment l'interroger correctement.

Répondre

12

Vous devez convertir l'objet moment revenir à un Date si météore/mongo peut traiter la requête. Vous pouvez le faire en ajoutant un appel à toDate comme ceci:

var startDate = moment().startOf('day').toDate(); 
var endDate = moment().add('days',1).toDate(); 
Winners.find({creation_date: {$gte: startDate, $lt: endDate}}).count(); 
+0

Excellent, merci! – ndemoreau

1

Essayez ceci:

// the number of milliseconds since 1970/01/01: 
creation_date:new Date().getTime() 

et

// you can still use moment: 
moment().startOf('day').valueOf() 

// query: 
Winners.find({ 
    creation_date: { 
    "$gte": moment().startOf('day').valueOf(), 
    "$lt": moment().add('days',1).valueOf() 
    } 
}).count(); 
Questions connexes