Docs Menu
Docs Home
/ /

$dateToString (operador de agregación)

$dateToString

Convierte un objeto de fecha en una string según un formato especificado por el usuario.

La expresión $dateToString tiene lo siguiente Sintaxis de expresión del operador:

Puedes usar $dateToString 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.

La expresión $dateToString tiene la siguiente sintaxis de expresión de operador:

{ $dateToString: {
date: <dateExpression>,
format: <formatString>,
timezone: <tzExpression>,
onNull: <expression>
} }
Campo
Descripción

date

La fecha para convertir a una string. <dateExpression> debe ser una expresión válida que resuelva a una Fecha, una Marca de tiempo o un ObjectID.

format

Opcional. La especificación del formato de fecha. <formatString> puede ser cualquier literal de string que contenga cero o más especificadores de formato. Para ver la lista de los especificadores disponibles, se debe consultar Especificadores de formato.

Si no se especifica y timezone está configurado en una zona horaria distinta de UTC, entonces $dateToString usará "%Y-%m-%dT%H:%M:%S.%L" como formato por defecto.

Si no se especifica y timezone no está especificado o se especifica explícitamente como UTC, entonces $dateToString usa "%Y-%m-%dT%H:%M:%S.%LZ" como formato por defecto.

timezone

Opcional. La zona horaria del resultado de la operación. <tzExpression> debe ser una expresión válida que se resuelva en una cadena con el formato de identificador de zona horaria de Olson.o una diferencia horaria UTC. Si no timezone se proporciona, el resultado se expresa en UTC.

Formato
Ejemplos

Olson Timezone Identifier

"America/New_York"
"Europe/London"
"GMT"

UTC Offset

+/-[hh]:[mm], e.g. "+04:45"
+/-[hh][mm], e.g. "-0530"
+/-[hh], e.g. "+03"

onNull

Opcional. El valor a devolver si date es nulo o falta. Los argumentos pueden ser cualquier expresión válida.

Si no se especifica, $dateToString devuelve nulo si date está nulo o no está presente.

Tip

Los siguientes especificadores de formato están disponibles para usarse en <formatString>:

Especificadores
Descripción
Possible Values

%b

Nombre del mes abreviado (3 letras)

Nuevo en la versión 7.0.

jan-dec

%B

Nombre completo del mes

Nuevo en la versión 7.0.

january-december

%d

Día del mes (2 dígitos, con ceros a la izquierda)

01-31

%G

Año en formato ISO 8601

0000-9999

%H

Hora (2 dígitos, con ceros a la izquierda, reloj de 24 horas)

00-23

%j

Día del año (3 dígitos, con ceros a la izquierda)

001-366

%L

Milisegundo (3 dígitos, con ceros a la izquierda)

000-999

%m

Mes (2 dígitos, con ceros a la izquierda)

01-12

%M

Minuto (2 dígitos, con ceros a la izquierda)

00-59

%S

Segundo (2 dígitos, con ceros a la izquierda)

00-60

%u

Número del día de la semana en formato ISO 8601 (1-lunes, 7-domingo)

1-7

%U

Semana del año (2 dígitos, con ceros a la izquierda)

00-53

%V

Semana del año en formato ISO 8601

01-53

%w

Día de la semana (1-domingo, 7-sábado)

1-7

%Y

Año (4 dígitos, con ceros a la izquierda)

0000-9999

%z

El desfase horario desde UTC.

+/-[hh][mm]

%Z

Los minutos desplazados respecto de UTC como un número. Por ejemplo, si la diferencia de zona horaria (+/-[hhmm]) era +0445, la diferencia en minutos sería +285.

+/-mmm

%%

Carácter porcentual como literal

%

Considere una colección sales con el siguiente documento:

db.sales.insertOne(
{
"_id" : 1,
"item" : "abc",
"price" : 10,
"quantity" : 2,
"date" : ISODate("2014-01-01T08:15:39.736Z")
}
)

La siguiente agregación usa $dateToString para devolver el campo date como strings formateadas:

db.sales.aggregate(
[
{
$project: {
yearMonthDayUTC: { $dateToString: { format: "%Y-%m-%d", date: "$date" } },
timewithOffsetNY: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "America/New_York"} },
timewithOffset430: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "+04:30" } },
minutesOffsetNY: { $dateToString: { format: "%Z", date: "$date", timezone: "America/New_York" } },
minutesOffset430: { $dateToString: { format: "%Z", date: "$date", timezone: "+04:30" } },
abbreviated_month: { $dateToString: {format: "%b", date: "$date", timezone: "+04:30" } },
full_month: { $dateToString: { format: "%B", date: "$date", timezone: "+04:30" } }
}
}
]
)

La operación devuelve el siguiente resultado:

{
"_id" : 1,
"yearMonthDayUTC" : "2014-01-01",
"timewithOffsetNY" : "03:15:39:736-0500",
"timewithOffset430" : "12:45:39:736+0430",
"minutesOffsetNY" : "-300",
"minutesOffset430" : "270",
"abbreviated_month": "Jan",
"full_month": "January"
}

Volver

$dateToParts

En esta página