Eu sei que os ObjectIds contêm a data em que foram criados. Existe uma maneira de consultar esse aspecto do ObjectId?
javascript
mongodb
Zach
fonte
fonte
Respostas:
O preenchimento de registros de data e hora no ObjectIds abrange consultas com base em datas incorporadas no ObjectId em grande detalhe.
Resumidamente no código JavaScript:
fonte
~/.mongorc.js
arquivo para disponibilizá-lo quando omongo
shell for iniciado.ObjectId(hexSeconds + "0000000000000000");
paradb.ObjectID.createFromHexString(hexSeconds + "0000000000000000");
ObjectId()
por:require('mongoose').Types.ObjectId()
- onderequire('mongoose')
está sua instância do Mongoose inicializada / configurada.O uso da função embutida fornecida pelos drivers mongodb no Node.js permite consultar por qualquer carimbo de data / hora:
Como alternativa, para procurar registros antes da hora atual, você pode simplesmente:
Fonte: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
fonte
Em
pymongo
, isso pode ser feito desta maneira:fonte
pymongo
dependência:epoch_time_hex = format(int(time.time()), 'x')
(não esqueça de acrescentar zeros à sua consulta) O pacote de hora foi usado (import time
).Como os 4 primeiros bytes de um ObjectId representam um carimbo de data / hora , para consultar sua coleção cronologicamente, basta ordenar por ID:
Depois de obter os documentos, você pode obter o tempo de geração do ObjectId da seguinte maneira:
fonte
como encontrar o comando Find (esta data [2015-1-12] até esta data [2015-1-15]):
Conte o comando (nesta data [2015-1-12] até esta data [2015-1-15]):
Remova o comando (nesta data [2015-1-12] até esta data [2015-1-15]):
fonte
Você pode usar a
$convert
função para extrair a data do ObjectId a partir da versão 4.0.Algo como
Você pode consultar a data comparando entre a hora de início e término da data.
OU
Você pode usar taquigrafia
$toDate
para conseguir o mesmo.fonte
Para obter documentos com os últimos 60 dias da coleção mongo, usei a consulta abaixo no shell.
fonte
Se você deseja fazer uma consulta de intervalo, pode fazê-lo como nesta postagem . Por exemplo, consultando para um dia específico (ou seja, 4 de abril de 2015):
fonte
A partir da documentação:
Dessa forma, você tem uma data que é um ISODate.
Veja http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Extractinsertiontimesfromidratherthanteraseparatetimestampfield . Para maiores informações
fonte
Usando o MongoObjectID, você também deve encontrar os resultados conforme indicado abaixo
fonte
Nos trilhos,
mongoid
você pode consultar usandofonte