2015-03-29 16 views
14

Ho questa domanda per ottenere risultati al mese. Ma volevo ottenere i risultati di oggi.Mongodb trova risultati per data oggi

var start = new Date(2010, 11, 1); 
var end = new Date(2010, 11, 30); 

db.posts.find({created_on: {$gte: start, $lt: end}}); 

Qual è il modo migliore per farlo?

+0

'nuovo Data (anno, mese [giorno, [, ora [, minuti, secondi [[, millisecondi]]]]]);' https: // developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date – Prinzhorn

risposta

36

la data di inizio oggetto dovrebbe contenere le ore di tempo data attuale al 00:00:00.000 (millisecondi precisione) e impostare le ore per la data odierna per 23:59:59.999:

var start = new Date(); 
start.setHours(0,0,0,0); 

var end = new Date(); 
end.setHours(23,59,59,999); 

Poi passare gli oggetti di data modificati come al solito nella query MongoDB operatore:

db.posts.find({created_on: {$gte: start, $lt: end}}); 

Se si utilizza la libreria momentjs, questo può essere fatto utilizzando i startOf() e endOf() metodi su del momento corrente d mangiato oggetto, passando la stringa 'day' come argomenti:

var start = moment().startOf('day'); // set to 12:00 am today 
var end = moment().endOf('day'); // set to 23:59 pm today