type new mongo long _id shell mongodb timestamp unix-timestamp

shell - new - mongodb objectid to string



Cómo extraigo la fecha de creación de un Mongo ObjectID (3)

Estoy usando el shell Mongo para consultar mi Mongo db. Quiero usar la marca de tiempo contenida en el ID de objeto como parte de mi consulta y también como una columna para extraer en salida. Configuré Mongo para crear ObjectIDs por sí mismo.

Mi problema es que no puedo encontrar la forma de trabajar con el ObjectID para extraer su marca de tiempo.

Aquí están las consultas que estoy tratando de hacer funcionar. El campo ''createdDate'' es un marcador de posición; no estoy seguro de cuál es el campo correcto:

//Find everything created since 1/1/2011 db.myCollection.find({date: {$gt: new Date(2011,1,1)}}); //Find everything and return their createdDates db.myCollection.find({},{createdDate:1});


getTimestamp ()

La función que necesita es esta, ya está incluida para usted en el shell:

ObjectId.prototype.getTimestamp = function() { return new Date(parseInt(this.toString().slice(0,8), 16)*1000); }

Referencias

Echa un vistazo a esta sección de los documentos:

Esta prueba unitaria también demuestra lo mismo:

Ejemplo usando el shell Mongo:

> db.col.insert( { name: "Foo" } ); > var doc = db.col.findOne( { name: "Foo" } ); > var timestamp = doc._id.getTimestamp(); > print(timestamp); Wed Sep 07 2011 18:37:37 GMT+1000 (AUS Eastern Standard Time) > printjson(timestamp); ISODate("2011-09-07T08:37:37Z")


En python puedes hacer esto:

>>> from bson.objectid import ObjectId >>> gen_time = datetime.datetime(2010, 1, 1) >>> dummy_id = ObjectId.from_datetime(gen_time) >>> result = collection.find({"_id": {"$lt": dummy_id}})

Creo que, ObjectId.from_datetime () - es un método útil de la biblioteca bson estándar. Tal vez otras vinculaciones de idiomas tengan una función alternativa incorporada. Fuente: http://api.mongodb.org/python/current/api/bson/objectid.html


Esta pregunta es útil para comprender cómo usar la marca de tiempo incrustada de _id en situaciones de consulta (hace referencia a la documentación de Mongo Extended JSON ). Así es como se hace:

col.find({..., ''_id'' : {''$lt'' : {''$oid'' : ''50314b8e9bcf000000000000''}} })

encuentra documentos creados antes que el dado por oid. Utilizado junto con la ordenación y limitación naturales, puede utilizar BSON _ids para crear consultas API similares a Twitter ( proporcióneme el último OID que tenga y proporcionaré veinte más )