oid new long create bsonid javascript mongodb

javascript - new - Obteniendo la marca de tiempo de mongodb id



mongoose objectid to string (5)

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

La marca de tiempo está enterrada profundamente dentro de las entrañas del objeto mongodb. Sigue y mantente helado.

Iniciar sesión en mongodb shell

ubuntu@ip-10-0-1-223:~$ 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 de esa base de datos en la que estamos ahora

> use penguins switched to db penguins

Consígase un ISODate:

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

Imprime un 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)

Ejemplo de bucle, cadenas de impresión:

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

Ejemplo de bucle, igual que find (), imprima las filas

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

Loop, obtén 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 a solo 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")

Filterdown aún más 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, 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 en aaaa-MM-dd

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

obtenerlo 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)

Los alienígenas están llegando, solo tu dominio de MongoDB puede salvarnos.

¿Cómo obtengo la marca de tiempo de la id de MongoDB?



Aquí hay una función php rápida para todos ustedes;)

public static function makeDate($mongoId) { $timestamp = intval(substr($mongoId, 0, 8), 16); $datum = (new DateTime())->setTimestamp($timestamp); return $datum->format(''d/m/Y''); }


En el lado del servidor, haga _id de MongoDB ObjectId

date = new Date( parseInt( _id.toString().substring(0,8), 16 ) * 1000 )

Y en el lado del cliente, use

var dateFromObjectId = function (objectId) { return new Date(parseInt(objectId.substring(0, 8), 16) * 1000); };


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

Entonces tu fecha y hora es:

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

y

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