Se você deseja obter todas as novidades nos últimos 5 minutos, precisará fazer alguns cálculos, mas não é difícil ...
Primeiro, crie um índice na propriedade com a qual você deseja corresponder (inclua a direção de classificação -1 para decrescente e 1 para ascendente)
db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
Em seguida, consulte os documentos criados nos últimos 5 minutos (60 segundos * 5 minutos) .... porque o javascript .getTime()
retorna milissegundos, você precisa multiplicar por 1000 antes de usá-lo como entrada para o new Date()
construtor.
db.things.find({
createdAt: {
$gte: new Date(new Date().getTime()-60*5*1000).toISOString()
}
})
.count()
A explicação para new Date(new Date().getTime()-60*5*1000).toISOString()
é a seguinte:
Primeiro, calculamos "5 minutos atrás":
new Date().getTime()
nos fornece o tempo atual em milissegundos
- Queremos subtrair 5 minutos (em ms) do seguinte:
5*60*1000
- Simplesmente multiplico por 60
segundos para facilitar a alteração. Eu posso mudar 5
para 120
se quiser 2 horas (120 minutos).
new Date().getTime()-60*5*1000
nos dá 1484383878676
(5 minutos atrás em ms)
Agora precisamos alimentar isso em um new Date()
construtor para obter o formato de string ISO exigido pelos registros de data e hora do MongoDB.
{ $gte: new Date(resultFromAbove).toISOString() }
(consulta mongodb .find ())
- Como não podemos ter variáveis, fazemos tudo de uma só vez:
new Date(new Date().getTime()-60*5*1000)
- ... então converta para string ISO:
.toISOString()
new Date(new Date().getTime()-60*5*1000).toISOString()
nos dá 2017-01-14T08:53:17.586Z
Claro que isso é um pouco mais fácil com variáveis se você estiver usando o driver node-mongodb-native, mas isso funciona no shell mongo, que é o que eu costumo usar para verificar as coisas.