Eu já vi usando strings, timestamps inteiros e objetos de data e hora mongo.
177
A melhor maneira é armazenar objetos Date nativos do JavaScript , que são mapeados nos objetos Date nativos do BSON .
> db.test.insert({date: ISODate()})
> db.test.insert({date: new Date()})
> db.test.find()
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:42.389Z") }
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:57.240Z") }
O tipo nativo suporta toda uma gama de métodos úteis prontos para uso, que você pode usar nos trabalhos de redução de mapa, por exemplo.
Se necessário, é possível converter facilmente Date
objetos de e para os registros de data e hora do Unix 1) , usando o getTime()
método e o Date(milliseconds)
construtor, respectivamente.
1) Estritamente falando, o carimbo de data e hora do Unix é medido em segundos . O objeto Data JavaScript mede em milissegundos desde a época do Unix.
389
e240
são os milissegundos do registro de data e hora. O formatoZ
no formato string indica ao MongoDB que o carimbo de data / hora fornecido é no UTC. Se você o ler novamente, seu aplicativo provavelmente o converterá no fuso horário local , fazendo parecer que a hora mudou. Mas o tempo ainda é o mesmo, só é interpretado de uma perspectiva diferente do fuso horário. Por exemplo,12:50:42Z
e13:50:42+01:00
representa o mesmo momento no tempo.21:56:03+01:00
agora no CET e você o inserenew Date()
, o MongoDB pode representá- lo como20:56:03Z
. Mas quando você o ler novamente e exibi-lo no seu aplicativo usando as configurações de fuso horário local (CET), ele será lido21:56:03
novamente.Um carimbo de data já está no objeto _id, representando o tempo de inserção
Portanto, se o tempo de inserção é o que você precisa, ele já está lá:
Entre no mongodb shell
Crie seu banco de dados inserindo itens
Vamos fazer desse banco de dados o que estamos agora
Recupere as linhas:
Obtenha cada linha no formato aaaa-MM-dd HH: mm: ss:
Se esse último one-liner o confundir, tenho uma explicação de como isso funciona aqui: https://stackoverflow.com/a/27613766/445131
fonte
_id
?_id.getTimestamp()
.