Se si desidera ottenere tutte le cose nuove negli ultimi 5 minuti che avrebbe dovuto fare alcuni calcoli, ma la sua non è difficile ...
Innanzitutto creare un indice sulla proprietà che si desidera far corrispondere il (includere sorta direzione -1 per discendente e 1 per ascendente)
db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
quindi eseguire una query per i documenti creati negli ultimi 5 minuti (60 secondi * 5 minuti) .... perchè javascript's .getTime()
restituisce i millisecondi necessari per moltiplicare per 1000 prima di utilizzarlo come input per il costruttore new Date()
.
db.things.find({
createdAt: {
$gte: new Date(new Date().getTime()-60*5*1000).toISOString()
}
})
.count()
Spiegazione per new Date(new Date().getTime()-60*5*1000).toISOString()
è la seguente:
Prima calcoliamo "5 minuti fa":
new Date().getTime()
ci dà il tempo corrente in millisecondi
- Vogliamo sottrarre 5 minuti (in ms) da quello:
5*60*1000
- Mi limito a moltiplicare per 60
secondi, quindi è facile da modificare. Posso solo cambiare 5
a 120
se voglio 2 ore (120 minuti).
new Date().getTime()-60*5*1000
ci dà 1484383878676
(5 minuti fa in ms)
Ora abbiamo bisogno per alimentare che in un costruttore new Date()
per ottenere il formato di stringa ISO richiesto dal timestamp MongoDB.
{ $gte: new Date(resultFromAbove).toISOString() }
(MongoDB .find() query)
- Dal momento che non siamo in grado di avere variabili lo facciamo tutto in un solo colpo:
new Date(new Date().getTime()-60*5*1000)
- ... poi convertire in stringa ISO:
.toISOString()
new Date(new Date().getTime()-60*5*1000).toISOString()
noi 2017-01-14T08:53:17.586Z
Naturalmente dà questo è un po 'più facile con le variabili, se si sta utilizzando il driver nodo MongoDB-native, ma questo funziona nel mon go shell che è quello che di solito uso per controllare le cose.
errore di ricezione: ISODate non è definito. – coure2011
quale versione stai usando? – mnemosyn
node.js è v0.4.8 – coure2011