Definición
Compatibilidad
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.
Sintaxis
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 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Cambiado en la versión 3.6. La fecha para convertir a una string. | ||||||||||||
| Opcional. La especificación del formato de fecha. Si no se especifica, | ||||||||||||
|
| ||||||||||||
| Opcional. El valor a devolver si Si no se especifica, |
Especificadores de formato
Los siguientes especificadores de formato están disponibles para usarse en <formatString>:
Especificadores | Descripción | Possible Values |
|---|---|---|
| Nombre del mes abreviado (3 letras) Nuevo en la versión 7.0. |
|
| Nombre completo del mes Nuevo en la versión 7.0. |
|
| Día del mes (2 dígitos, con ceros a la izquierda) |
|
| Año en formato ISO 8601 |
|
| Hora (2 dígitos, con ceros a la izquierda, reloj de 24 horas) |
|
| Día del año (3 dígitos, con ceros a la izquierda) |
|
| Milisegundo (3 dígitos, con ceros a la izquierda) |
|
| Mes (2 dígitos, con ceros a la izquierda) |
|
| Minuto (2 dígitos, con ceros a la izquierda) |
|
| Segundo (2 dígitos, con ceros a la izquierda) |
|
| Número del día de la semana en formato ISO 8601 (1-lunes, 7-domingo) |
|
| Semana del año (2 dígitos, con ceros a la izquierda) |
|
| Semana del año en formato ISO 8601 |
|
| Día de la semana (1-domingo, 7-sábado) |
|
| Año (4 dígitos, con ceros a la izquierda) |
|
| El desfase horario desde UTC. |
|
| Los minutos desplazados respecto de UTC como un número. Por ejemplo, si la diferencia de zona horaria ( |
|
| Carácter porcentual como literal |
|
Ejemplo
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" }