Hemos utilizado hasta ahora varios tipos de datos cuando inicializamos campos de un documento:
Veremos ahora como almacenar datos de tipo Date.
La fecha es un entero de 64 bits que representa el número de milisegundos desde la época de Unix (1 de enero de 1970). Esto da como resultado un intervalo de fechas representables de aproximadamente 290 millones de años en el pasado y el futuro. El tipo Date almacena el signo, un valor negativo representa una fecha anterior a 1970.
Veamos un ejemplo como podemos almacenar un tipo de dato Date tomando la fecha y hora actual del servidor.
Una playa de estacionamiento cada vez que ingresa un vehículo crea un documento donde almacena la patente y la fecha y hora de ingreso .
use base1 db.autos.drop() db.autos.insertOne( { patente : 'aaa111', fechahora : new Date() } ) db.autos.insertOne( { patente : 'bbb222', fechahora : new Date() } ) db.autos.insertOne( { patente : 'ccc333', fechahora : new Date() } ) db.autos.find().pretty()
La representación de los datos de tipo Date cuando llamamos al método find es:
Para almacenar la fecha se utiliza el estándar ISO 8601 que tiene un formato:
YYYY-MM-DDTHH:MM:SS
Podemos almacenar una fecha particular cuando creamos el objeto de la clase Date:
use base1 db.empleados.drop() db.empleados.insertOne( { _id : 20456234, nombre : 'Rodriguez Pablo', fechaingreso : new Date(2010,0,31) } ) db.empleados.insertOne( { _id : 17488834, nombre : 'Gomez Ana', fechaingreso : new Date(2001,11,1) } ) db.empleados.insertOne( { _id : 23463564, nombre : 'Juarez Carla', fechaingreso : new Date(2005,3,14) } ) db.empleados.find().pretty()
Como el shell de MongoDB está implementado en JavaScript debemos indicar al crear un objeto dee la clase Data para el mes un valor comprendido entre 0 y 11.
Podemos ver las fechas almacenadas en el campo 'fechaingreso', y que la parte de la hora está en cero por no pasarlas cuando creamos el objeto de la clase Date:
Si necesitamos que los datos de empleados se recuperen en forma ordenada por el campo 'fechaingreso' debemos codificar la siguiente consulta:
db.empleados.find().pretty().sort({fechaingreso:1})
Crear la colección 'alumnos' en la base de datos 'base1' (eliminar la colección previamente), cargar luego 3 documentos:
use base1 db.alumnos.drop() db.alumnos.insertOne( { _id: 20456123, apellido: 'Gonzalez', nombre: 'Ana', domicilio: 'Colon 123', fechanacimiento: new Date(1990,7,15) } ) db.alumnos.insertOne( { _id: 45123845, apellido: 'Juarez', nombre: 'Bernardo', domicilio: 'Sucre 456', fechanacimiento: new Date(1964,0,1) } ) db.alumnos.insertOne( { _id: 16567512, apellido: 'Perez', nombre: 'Laura', domicilio: '21 de Septiembre 3233', fechanacimiento: new Date(1972,3,2) } ) db.alumnos.find().pretty()
Imprimir todos los documentos de la colección alumnos.
Imprimir solo el apellido y la fecha de nacimiento.
Imprimir todos los datos ordenados por la fecha de nacimiento de mayor a menor.
Imprimir todos los alumnos que nacieron a partir de 1970.
use base1 db.alumnos.drop() db.alumnos.insertOne( { _id: 20456123, apellido: 'Gonzalez', nombre: 'Ana', domicilio: 'Colon 123', fechanacimiento: new Date(1990,7,15) } ) db.alumnos.insertOne( { _id: 45123845, apellido: 'Juarez', nombre: 'Bernardo', domicilio: 'Sucre 456', fechanacimiento: new Date(1964,0,1) } ) db.alumnos.insertOne( { _id: 16567512, apellido: 'Perez', nombre: 'Laura', domicilio: '21 de Septiembre 3233', fechanacimiento: new Date(1972,3,2) } ) db.alumnos.find().pretty() db.alumnos.find({}, {apellido:1,fechanacimiento:1,_id:0}).pretty() db.alumnos.find().pretty().sort({fechanacimiento:-1}) db.alumnos.find({fechanacimiento:{$gte:new Date(1970,0,1)}}).pretty()