Docs Menu
Docs Home
/ /

$dateToParts (operador de agregación)

$dateToParts

Devuelve un documento que contiene los componentes de un valor de fecha BSON dado como propiedades individuales. Las propiedades devueltas son year, month, day, hour, minute, second y millisecond.

You can set the iso8601 property to true to return the parts representing an ISO week date instead. This will return a document where the properties are isoWeekYear, isoWeek, isoDayOfWeek, hour, minute, second and millisecond.

La expresión $dateToParts tiene la siguiente sintaxis:

{
$dateToParts: {
'date' : <dateExpression>,
'timezone' : <timezone>,
'iso8601' : <boolean>
}
}

El $dateToParts procesa un documento con los siguientes campos:

Campo
Obligatorio/Opcional
Descripción

date

Requerido

The input date for which to return parts. <dateExpression> can be any expression that resolves to a Date, a Timestamp, or an ObjectID. For more information on expressions, see Expressions.

timezone

Opcional

La zona horaria que se usará para formatear la fecha. Por defecto, usa$dateToParts UTC.

<timezone> puede ser cualquier expresión que evalúe una cadena cuyo valor sea:

  • un identificador de zona horaria de Olson, como "Europe/London" "America/New_York"o, 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.

iso8601

Opcional

Si se establece en true, modifica el documento de salida para usar campos de fecha de semana ISO. El valor predeterminado es false.

Al utilizar 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 la diferencia horaria del identificador de zona horaria Olson. El ejemplo utiliza los operadores $hour y para devolver las partes correspondientes del $minute date campo:

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
}

Considere una colección sales con el siguiente documento:

{
"_id" : 2,
"item" : "abc",
"price" : 10,
"quantity" : 2,
"date" : ISODate("2017-01-01T01:29:09.123Z")
}

La siguiente agregación utiliza para devolver un documento que contiene las partes constituyentes $dateToParts del date campo.

db.sales.aggregate([
{
$project: {
date: {
$dateToParts: { date: "$date" }
},
date_iso: {
$dateToParts: { date: "$date", iso8601: true }
},
date_timezone: {
$dateToParts: { date: "$date", timezone: "America/New_York" }
}
}
}])

La operación devuelve el siguiente resultado:

{
"_id" : 2,
"date" : {
"year" : 2017,
"month" : 1,
"day" : 1,
"hour" : 1,
"minute" : 29,
"second" : 9,
"millisecond" : 123
},
"date_iso" : {
"isoWeekYear" : 2016,
"isoWeek" : 52,
"isoDayOfWeek" : 7,
"hour" : 1,
"minute" : 29,
"second" : 9,
"millisecond" : 123
},
"date_timezone" : {
"year" : 2016,
"month" : 12,
"day" : 31,
"hour" : 20,
"minute" : 29,
"second" : 9,
"millisecond" : 123
}
}

Volver

$dateSubtract

En esta página