Docs Menu
Docs Home
/ /

$currentDate

$currentDate

El $currentDate El operador establece el valor de un campo en la fecha actual, ya sea como Fecha o marca de tiempo. El tipo predeterminado es Fecha.

Puedes usar $currentDate para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El operador $currentDate tiene la forma:

{ $currentDate: { <field1>: <typeSpecification1>, ... } }

<typeSpecification> puede ser cualquiera de los siguientes:

  • un booleano true para establecer el valor del campo a la fecha actual como un Fecha, o

  • un documento { $type: "timestamp" } o { $type: "date" } que especifique explícitamente el tipo. El operador es sensible a mayúsculas y minúsculas y solo acepta las minúsculas "timestamp" o las minúsculas "date".

Para especificar un <field> en un documento incrustado o en un arreglo, utiliza notación de puntos.

A partir de MongoDB 5.0, los operadores de actualización procesan los campos de documentos con nombres basados en cadenas en orden lexicográfico. Los campos con nombres numéricos se procesan en orden numérico. Consulta Comportamiento del operador de actualización para obtener más información.

$currentDate establece el campo especificado en la fecha cuando $currentDate se ejecutó.

Si el campo no existe, $currentDate agrega el campo a un documento.

A partir de MongoDB 5.0, mongod ya no genera un error cuando utiliza un operador de actualización como $currentDate con una expresión de operando vacía ( { } ). Una actualización vacía no produce cambios y no genera ninguna entrada en el oplog (lo que significa que la operación es una “no-op").

Crear una colección de muestra customers con el siguiente documento:

db.customers.insertOne(
{ _id: 1, status: "a", lastModified: ISODate("2013-10-02T01:11:18.965Z") }
)

La siguiente operación actualiza el campo lastModified a la fecha actual, el campo "cancellation.date" a la marca de tiempo actual, y actualiza el campo status a "D" y el campo "cancellation.reason" a "user request".

db.customers.updateOne(
{ _id: 1 },
{
$currentDate: {
lastModified: true,
"cancellation.date": { $type: "timestamp" }
},
$set: {
"cancellation.reason": "user request",
status: "D"
}
}
)

$currentDate establece el campo especificado en la fecha cuando $currentDate se ejecutó.

Para verificar la actualización:

db.customers.find()

El documento actualizado se asemeja a:

{
"_id" : 1,
"status" : "D",
"lastModified" : ISODate("2020-01-22T21:21:41.052Z"),
"cancellation" : {
"date" : Timestamp(1579728101, 1),
"reason" : "user request"
}
}

El campo lastModified se establece en la fecha en que $currentDate se ejecutó en el ejemplo de actualización mostrado anteriormente.

Los métodos de actualización pueden aceptar un pipeline de agregación. Específicamente, el ejemplo anterior puede reescribirse de la siguiente manera utilizando la etapa de agregación $set y las variables de agregación NOW (para la fecha y hora actuales) y CLUSTER_TIME (para la marca de tiempo actual):

Tip

  • Para acceder a las variables de agregación, se debe anteponer a la variable signos de doble dólar $$ y ponerla entre comillas.

  • CLUSTER_TIME está disponible solo en sets de réplicas y clústeres particionados.

  • Los valores NOW y CLUSTER_TIME permanecen iguales a lo largo de todo el pipeline.

db.customers.updateOne(
{ _id: 1 },
[
{ $set: { lastModified: "$$NOW", cancellation: {date: "$$CLUSTER_TIME", reason: "user request"}, status: "D" } }
]
)

Después de la operación, se puede hacer un query para la colección para verificar la actualización:

db.customers.find().pretty()

El query debería devolver el siguiente documento:

{
"_id" : 1,
"status" : "D",
"lastModified" : ISODate("2020-01-22T21:02:18.994Z"),
"cancellation" : {
"date" : Timestamp(1579726934, 2),
"reason" : "user request"
}
}

Volver

Campos

En esta página