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.

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>
} }

El $dateToString procesa un documento con los siguientes campos:

Campo
Descripción

date

Cambiado en la versión 3.6.

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 cadena que contenga 0 o más especificadores de formato. Para ver la lista de especificadores disponibles, consulte Especificadores de formato.

Si no se especifica, $dateToString utiliza "%Y-%m-%dT%H:%M:%S.%LZ" como formato predeterminado.

timezone

Optional. La zona horaria del resultado de la operación. <tzExpression> debe ser una expresión válida que se resuelva en una cadena formateada como un identificador de zona horaria de Olsono una diferencia UTC. Si no timezone se proporciona, el resultado se muestra UTC en.

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 utiliza para devolver $dateToString el date campo como cadenas 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