Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$dateFromParts (operador de expresión)

$dateFromParts

Construye y devuelve un objeto Date dada las propiedades constitutivas de la fecha.

La expresión $dateFromParts tiene la siguiente sintaxis:

{
$dateFromParts : {
'year': <year>, 'month': <month>, 'day': <day>,
'hour': <hour>, 'minute': <minute>, 'second': <second>,
'millisecond': <ms>, 'timezone': <tzExpression>
}
}

También puede especificar los campos de fecha de sus constituyentes en formato de fecha de semana ISO utilizando la siguiente sintaxis:

{
$dateFromParts : {
'isoWeekYear': <year>, 'isoWeek': <week>, 'isoDayOfWeek': <day>,
'hour': <hour>, 'minute': <minute>, 'second': <second>,
'millisecond': <ms>, 'timezone': <tzExpression>
}
}

La función $dateFromParts toma un documento con los siguientes campos:

Importante

No puede combinar el uso de fechas de calendario y campos de fecha de semana ISO al construir su documento de entrada $dateFromParts.

Campo
Obligatorio/Opcional
Descripción

year

Obligatorio si no se utiliza isoWeekYear

Año calendario. Puede ser cualquier expresión que devuelva un número.

Rango de valores: 1-9999

$dateFromParts

isoWeekYear

Obligatorio si no se utiliza year

Año de fecha de semana ISO. Puede ser cualquier expresión que devuelva un número.

Rango de valores: 1-9999

$dateFromParts

month

opcional. Solo se puede usar con year.

Mes. Puede ser cualquier expresión que se evalúe como un número.

Se establece por defecto en 1.

Rango de valores: 1-12

Rango de valores

isoWeek

opcional. Solo se puede usar con isoWeekYear.

Semana del año. Puede ser cualquier expresión que se evalúe en un número.

Se establece por defecto en 1.

Rango de valores: 1-53

Rango de valores

day

opcional. Solo se puede usar con year.

Día del mes. Puede ser cualquier expresión que se evalúe como un número.

Se establece por defecto en 1.

Rango de valores: 1-31

Rango de valores

isoDayOfWeek

opcional. Solo se puede usar con isoWeekYear.

Día de la semana (lunes 1 - domingo 7). Puede ser cualquier expresión que evalúe a un número.

Se establece por defecto en 1.

Rango de valores: 1-7

Rango de valores

hour

Opcional

Hora. Puede ser cualquier expresión que se evalúe como un número.

Se establece por defecto en 0.

Rango de valores: 0-23

Rango de valores

minute

Opcional

Minuto. Puede ser cualquier expresión que devuelva un número.

Se establece por defecto en 0.

Rango de valores: 0-59 Rango de valores

second

Opcional

Segundo. Puede ser cualquier expresión que se evalúe en un número.

Se establece por defecto en 0.

Rango de valores: 0-59

Rango de valores

millisecond

Opcional

Milisegundo. Puede ser cualquier expresión que devuelva un número.

Se establece por defecto en 0.

Rango de valores: 0-999

Rango de valores

timezone

Opcional

<timezone> puede ser cualquier expresión que se evalúe a una string cuyo valor sea uno de los siguientes:

  • un identificador de zona horaria de Olson, como "Europe/London" o "America/New_York", o

  • un desplazamiento UTC en la forma:

    • +/-[hh]:[mm]por ejemplo, "+04:45", o

    • +/-[hh][mm]por ejemplo, "-0530", o

    • +/-[hh], e.g. "+03".

Para obtener más información sobre las expresiones, consulta Expresiones.

El rango de valores admitidos para year y isoWeekYear es 1-9999.

Si el valor especificado para campos distintos de year, isoWeekYear y timezone está fuera del rango válido, $dateFromParts lleva o resta la diferencia de otras partes de la fecha para calcular la fecha.

Considere la siguiente expresión $dateFromParts donde el valor del campo month es 14, que es 2 meses mayor que el valor máximo de 12 meses (o 1 año):

{ $dateFromParts: { 'year' : 2017, 'month' : 14, 'day': 1, 'hour' : 12 } }

La expresión calcula la fecha aumentando el year en 1 y estableciendo el month en 2 para devolver:

ISODate("2018-02-01T12:00:00Z")

Considere la siguiente expresión $dateFromParts donde el valor del campo month es 0, que es 1 mes menos que el valor mínimo de 1 mes:

{ $dateFromParts: { 'year' : 2017, 'month' : 0, 'day': 1, 'hour' : 12 } }

La expresión calcula la fecha disminuyendo el year en 1 y ajustando el month a 12 para devolver:

ISODate("2016-12-01T12:00:00Z")

Al usar un identificador de zona horaria de Olson en el campo <timezone>, MongoDB aplica el desplazamiento del horario de verano si corresponde para la zona horaria especificada.

Por ejemplo, considera 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 ilustra cómo MongoDB gestiona el ajuste de DST para el identificador de zona horaria Olson. El ejemplo usa los operadores $hour y $minute para devolver las partes correspondientes del campo date:

db.sales.aggregate([
{
$project: {
"nycHour": {
$hour: { date: "$date", timezone: "-05:00" }
},
"nycMinute": {
$minute: { date: "$date", timezone: "-05:00" }
},
"gmtHour": {
$hour: { date: "$date", timezone: "GMT" }
},
"gmtMinute": {
$minute: { date: "$date", timezone: "GMT" } },
"nycOlsonHour": {
$hour: { date: "$date", timezone: "America/New_York" }
},
"nycOlsonMinute": {
$minute: { date: "$date", timezone: "America/New_York" }
}
}
}])

La operación devuelve el siguiente resultado:

{
"_id": 1,
"nycHour" : 5,
"nycMinute" : 24,
"gmtHour" : 10,
"gmtMinute" : 24,
"nycOlsonHour" : 6,
"nycOlsonMinute" : 24
}

La siguiente agregación utiliza $dateFromParts para construir tres objetos de fecha a partir de los campos de entrada proporcionados:

db.sales.aggregate([
{
$project: {
date: {
$dateFromParts: {
'year' : 2017, 'month' : 2, 'day': 8, 'hour' : 12
}
},
date_iso: {
$dateFromParts: {
'isoWeekYear' : 2017, 'isoWeek' : 6, 'isoDayOfWeek' : 3, 'hour' : 12
}
},
date_timezone: {
$dateFromParts: {
'year' : 2016, 'month' : 12, 'day' : 31, 'hour' : 23,
'minute' : 46, 'second' : 12, 'timezone' : 'America/New_York'
}
}
}
}])

La operación devuelve el siguiente resultado:

{
"_id" : 1,
"date" : ISODate("2017-02-08T12:00:00Z"),
"date_iso" : ISODate("2017-02-08T12:00:00Z"),
"date_timezone" : ISODate("2017-01-01T04:46:12Z")
}
Califique esta página