Saltar al contenido

Obtener la marca de tiempo de mongodb id

Contamos con la solución a esta preocupación, o por lo menos eso esperamos. Si tienes dudas puedes dejar un comentario, que sin tardar

Solución:

La marca de tiempo está contenida en los primeros 4 bytes de una identificación de mongoDB (ver: http://www.mongodb.org/display/DOCS/Object+IDs).

Entonces su marca de tiempo es:

timestamp = _id.toString().substring(0,8)

y

date = new Date( parseInt( timestamp, 16 ) * 1000 )

A partir de Mongo 2.2, esto ha cambiado (ver: http://docs.mongodb.org/manual/core/object-id/)

Puede hacer todo esto en un solo paso dentro del shell de mongo:

document._id.getTimestamp();

Esto devolverá un objeto Fecha.

Obtenga la marca de tiempo de un elemento de la colección mongoDB, con un tutorial:

La marca de tiempo está enterrada en lo profundo de las entrañas del objeto mongodb.

Iniciar sesión en mongodb shell

[email protected]:~$ mongo 10.0.1.223
MongoDB shell version: 2.4.9
connecting to: 10.0.1.223/test

Crea tu base de datos insertando elementos

> db.penguins.insert("penguin": "skipper")
> db.penguins.insert("penguin": "kowalski")
> 

Compruebe si está allí:

> show dbs
local      0.078125GB
penguins   0.203125GB

Hagamos que esa base de datos sea la que tenemos ahora.

> use penguins
switched to db penguins

Consíguete una ISODate:

> ISODate("2013-03-01")
ISODate("2013-03-01T00:00:00Z")

Imprime algo de json:

> printjson("foo":"bar")
 "foo" : "bar" 

Recupera las filas:

> db.penguins.find()
 "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" 
 "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" 

Solo queremos inspeccionar una fila.

> db.penguins.findOne()
 "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" 

Obtenga el _id de esa fila:

> db.penguins.findOne()._id
ObjectId("5498da1bf83a61f58ef6c6d5")

Obtenga la marca de tiempo del objeto _id:

> db.penguins.findOne()._id.getTimestamp()
ISODate("2014-12-23T02:57:31Z")

Obtenga la marca de tiempo del último registro agregado:

> db.penguins.find().sort(_id:-1).limit(1).forEach(function (doc) print(doc._id.getTimestamp()) )
Tue Dec 23 2014 03:04:53 GMT+0000 (UTC)

Bucle de ejemplo, cadenas de impresión:

> db.penguins.find().forEach(function (doc) print("hi") )
hi
hi

Bucle de ejemplo, igual que find(), imprime las filas

> db.penguins.find().forEach(function (doc) printjson(doc) )
 "_id" : ObjectId("5498dbc9f83a61f58ef6c6d7"), "penguin" : "skipper" 
 "_id" : ObjectId("5498dbd5f83a61f58ef6c6d8"), "penguin" : "kowalski" 

Bucle, obtenga la fecha del sistema:

> db.penguins.find().forEach(function (doc) doc["timestamp_field"] = new Date(); printjson(doc); )

        "_id" : ObjectId("5498dbc9f83a61f58ef6c6d7"),
        "penguin" : "skipper",
        "timestamp_field" : ISODate("2014-12-23T03:15:56.257Z")


        "_id" : ObjectId("5498dbd5f83a61f58ef6c6d8"),
        "penguin" : "kowalski",
        "timestamp_field" : ISODate("2014-12-23T03:15:56.258Z")

Bucle, obtenga la fecha de cada fila:

> db.penguins.find().forEach(function (doc) doc["timestamp_field"] = doc._id.getTimestamp(); printjson(doc); )

        "_id" : ObjectId("5498dbc9f83a61f58ef6c6d7"),
        "penguin" : "skipper",
        "timestamp_field" : ISODate("2014-12-23T03:04:41Z")


        "_id" : ObjectId("5498dbd5f83a61f58ef6c6d8"),
        "penguin" : "kowalski",
        "timestamp_field" : ISODate("2014-12-23T03:04:53Z")

Filtrar solo por las fechas

> db.penguins.find().forEach(function (doc) doc["timestamp_field"] = doc._id.getTimestamp(); printjson(doc["timestamp_field"]); )
ISODate("2014-12-23T03:04:41Z")
ISODate("2014-12-23T03:04:53Z")

Filtrar hacia abajo solo para las cadenas:

> db.penguins.find().forEach(function (doc) doc["timestamp_field"] = doc._id.getTimestamp(); print(doc["timestamp_field"]) )
Tue Dec 23 2014 03:04:41 GMT+0000 (UTC)
Tue Dec 23 2014 03:04:53 GMT+0000 (UTC)

Imprima una fecha simple, obtenga su tipo, asigne una fecha:

> print(new Date())
Tue Dec 23 2014 03:30:49 GMT+0000 (UTC)
> typeof new Date()
object
> new Date("11/21/2012");
ISODate("2012-11-21T00:00:00Z")

Convertir instancia de fecha a aaaa-MM-dd

> print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate())
2014-1-1

obténgalo en formato aaaa-MM-dd para cada fila:

> db.penguins.find().forEach(function (doc) d = doc._id.getTimestamp(); print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()) )
2014-12-23
2014-12-23

el toLocaleDateString es más breve:

> db.penguins.find().forEach(function (doc) d = doc._id.getTimestamp(); print(d.toLocaleDateString()) )
Tuesday, December 23, 2014
Tuesday, December 23, 2014

Obtenga cada fila en formato aaaa-MM-dd HH:mm:ss:

> db.penguins.find().forEach(function (doc) d = doc._id.getTimestamp(); print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()) )
2014-12-23 3:4:41
2014-12-23 3:4:53

Obtenga la fecha de la última fila agregada:

> db.penguins.find().sort(_id:-1).limit(1).forEach(function (doc) print(doc._id.getTimestamp()) )
Tue Dec 23 2014 03:04:53 GMT+0000 (UTC)

Suelta la base de datos cuando hayas terminado:

> use penguins
switched to db penguins
> db.dropDatabase()
 "dropped" : "penguins", "ok" : 1 

Asegúrate de que se haya ido:

> show dbs
local   0.078125GB
test    (empty)

Ahora su MongoDB es a escala web.

Tienes la opción de añadir valor a nuestra información cooperando tu veteranía en las anotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *