sql >> Base de Datos >  >> NoSQL >> MongoDB

Método de fecha () de MongoDB

En MongoDB, la Date() El método devuelve una fecha como una cadena o como un objeto Fecha.

  • Cuando lo llamas como Date() , devuelve la fecha actual como una cadena en mongo concha.
  • Cuando lo llamas como new Date() , devuelve la fecha actual como un objeto Date.

También puede proporcionar una fecha específica como argumento para new Date() , para que use esa fecha.

Ejemplo:Date()

Aquí hay un ejemplo de cómo insertar un documento en una colección y usar Date() como el valor de uno de los campos:

db.dogs.insert(
  { 
    "_id" : 1,
    "name" : "Fetch", 
    "lastModified" : Date()
  }
)

Después de ejecutar ese código, podemos echar un vistazo al documento resultante:

db.dogs.find().pretty()

Resultado:

{
	"_id" : 1,
	"name" : "Fetch",
	"lastModified" : "Wed Jan 27 2021 10:15:53 GMT+1000 (AEST)"
}

Podemos ver que el lastModified el campo de fecha usa una cadena de fecha como su valor.

Ejemplo:new Date()

Como se mencionó, si desea devolver un objeto de fecha en lugar de una cadena de fecha, use new Date() .

Ejemplo:

db.dogs.insert(
  { 
    "_id" : 2,
    "name" : "Wag", 
    "lastModified" : new Date()
  }
)

Simplemente anteponiendo Date() con new da como resultado un objeto de fecha en lugar de una cadena de fecha.

Ahora revisemos la colección de documentos nuevamente:

db.dogs.find().pretty()

Resultado:

{
	"_id" : 1,
	"name" : "Fetch",
	"lastModified" : "Wed Jan 27 2021 10:15:53 GMT+1000 (AEST)"
}
{
	"_id" : 2,
	"name" : "Wag",
	"lastModified" : ISODate("2021-01-27T00:19:08.862Z")
}

Podemos ver que la fecha en el segundo documento se ha ajustado con ISODate() ayudante. La fecha ISO está en UTC.

Proporcione una fecha específica

Puede proporcionar su propia fecha al llamar al Date() método.

Para hacer esto, pase una cadena de fecha ISO-8601 con un año dentro del rango inclusivo 0 a través de 9999 a la new Date() constructor o ISODate() función.

He aquí un ejemplo.

db.dogs.update(
  { "_id" : 1 },
  { $set : { "born" : new Date( "2020-10-07" ) } }
)

Ahora revisemos el documento:

db.dogs.find( { "_id": 1 } ).pretty()

Resultado:

{
	"_id" : 1,
	"name" : "Fetch",
	"lastModified" : "Wed Jan 27 2021 10:15:53 GMT+1000 (AEST)",
	"born" : ISODate("2020-10-07T00:00:00Z")
}

Podemos ver que se ha agregado el campo nacido y se ha establecido en la fecha proporcionada.

Puede proporcionar la fecha en los siguientes formatos.

Formato Descripción
YYYY-mm-dd Devuelve el ISODate con la fecha especificada.
YYYY-mm-ddTHH:MM:ss Especifica la fecha y hora en la zona horaria local del cliente y devuelve el ISODate con la fecha y hora especificada en UTC.
YYYY-mm-ddTHH:MM:ssZ Especifica la fecha y hora en UTC y devuelve el ISODate con la fecha y hora especificada en UTC.
Entero También puede proporcionar un número entero como valor. Cuando hace esto, especifica la fecha y hora en milisegundos desde la época de Unix (1 de enero de 1970) y devuelve el ISODate resultante. instancia.

Época Unix

Aquí hay un ejemplo de cómo especificar un número entero como argumento para new Date() .

Al hacer esto, se especifica la fecha y hora en milisegundos desde la época de Unix (1 de enero de 1970) y se devuelve el ISODate resultante. instancia.

db.dogs.update(
  { "_id" : 2 },
  { $set : { "born" : new Date( 1601207768012 ) } }
)

Ahora revisemos el documento:

db.dogs.find( { "_id": 2 } ).pretty()

Resultado:

{
	"_id" : 2,
	"name" : "Wag",
	"lastModified" : ISODate("2021-01-27T00:19:08.862Z"),
	"born" : ISODate("2020-09-27T11:56:08.012Z")
}