Sé que los ObjectIds contienen la fecha en que fueron creados. ¿Hay alguna manera de consultar este aspecto del ObjectId?
javascript
mongodb
Zach
fuente
fuente
Respuestas:
Hacer estallar marcas de tiempo en ObjectIds cubre consultas basadas en fechas incrustadas en ObjectId con gran detalle.
Brevemente en código JavaScript:
fuente
~/.mongorc.js
archivo para tenerla disponible cuando semongo
inicie el shell.ObjectId(hexSeconds + "0000000000000000");
adb.ObjectID.createFromHexString(hexSeconds + "0000000000000000");
ObjectId()
con:require('mongoose').Types.ObjectId()
- donderequire('mongoose')
está su instancia de Mongoose inicializada / configurada.El uso de la función incorporada proporcionada por los controladores mongodb en Node.js le permite consultar por cualquier marca de tiempo:
Alternativamente, para buscar registros antes de la hora actual, simplemente puede hacer:
Fuente: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
fuente
En
pymongo
, se puede hacer de esta manera:fuente
pymongo
dependencia:epoch_time_hex = format(int(time.time()), 'x')
(no olvide agregar ceros para su consulta) Se utilizó el paquete de tiempo (import time
).Dado que los primeros 4 bytes de un ObjectId representan una marca de tiempo , para consultar su colección cronológicamente, simplemente ordene por id:
Después de obtener los documentos, puede obtener el tiempo de generación del ObjectId de la siguiente manera:
fuente
cómo encontrar Buscar el comando (esta fecha [2015-1-12] a esta fecha [2015-1-15]):
Cuente el comando (esta fecha [2015-1-12] a esta fecha [2015-1-15]):
Elimine el comando (esta fecha [2015-1-12] a esta fecha [2015-1-15]):
fuente
Puede usar la
$convert
función para extraer la fecha de ObjectId a partir de la versión 4.0.Algo como
Puede consultar la fecha comparando entre la hora de inicio y finalización de la fecha.
O
Puedes usar la taquigrafía
$toDate
para lograr lo mismo.fuente
Para obtener los documentos de los últimos 60 días en la colección mongo, utilicé la siguiente consulta en shell.
fuente
Si desea realizar una consulta de rango, puede hacerlo como en esta publicación . Por ejemplo, para consultar un día específico (es decir, 4 de abril de 2015):
fuente
De la documentación:
de esta manera tienes una fecha que es un ISODate.
Mire http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Extractinsertiontimesfromidratherthanhavingaseparatetimestampfield . para más información
fuente
Usando MongoObjectID también debería encontrar los resultados que se muestran a continuación
fuente
En rails
mongoid
puedes consultar usandofuente