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

$dateTrunc (operador de expresión)

$dateTrunc

Nuevo en la versión 5.0.

Trunca una fecha.

$dateTrunc sintaxis:

{
$dateTrunc: {
date: <Expression>,
unit: <Expression>,
binSize: <Expression>,
timezone: <tzExpression>,
startOfWeek: <Expression>
}
}
Campo
Requerido / Opcional
Descripción

Requerido

La fecha a truncar, especificada en UTC. La fecha puede ser cualquier expresión que se resuelva en una fecha, una marca de tiempo o un identificador de objeto.

Requerido

La unidad de tiempo, especificada como una expresión que debe resolverse en una de estas cadenas:

  • year

  • quarter

  • week

  • month

  • day

  • hour

  • minute

  • second

En conjunto, binSize y unit especifican el período de tiempo utilizado en el cálculo $dateTrunc.

Opcional

El valor numérico de tiempo, especificado como una expresión que debe resolverse en un número positivo distinto de cero. Por defecto es 1.

En conjunto, binSize y unit especifican el período de tiempo utilizado en el cálculo $dateTrunc.

Opcional

La zona horaria para el cálculo $dateTrunc, especificada como una expresión que debe resolverse en una cadena que contenga uno de estos valores:

Si no se proporciona ninguna zona horaria, el cálculo $dateTrunc se realiza en UTC.

Opcional

El comienzo de la semana. Se usa cuando la unidad es week. Por defecto es Sunday.

startOfWeek es una expresión que debe resolverse en una de estas cadenas que no distinguen entre mayúsculas y minúsculas:

  • monday (o mon)

  • tuesday (o tue)

  • wednesday (o wed)

  • thursday (o thu)

  • friday (o fri)

  • saturday (o sat)

  • sunday (o sun)

$dateTrunc:

En conjunto, binSize y unit especifican el período de tiempo utilizado en el cálculo $dateTrunc.

Por ejemplo:

  • Si binSize es 1 y unit es hour, el período de tiempo es una hora. Para la fecha 2021-03-20T11:30:05Z, $dateTrunc devuelve 2021-03-20T11:00:00Z.

  • Si binSize es 2 y unit es hour, el período de tiempo es de dos horas. Para la fecha 2021-03-20T11:30:05Z, $dateTrunc devuelve 2021-03-20T10:00:00Z.

$dateTrunc:

  • Divide el tiempo para el cálculo $dateTrunc en binSize períodos de tiempo en la unidad de tiempo especificada.

    Los períodos de tiempo comienzan en una fecha de referencia, que viene determinada por la unidad. Si la unidad es:

    • Una cadena distinta de week, $dateTrunc utiliza una fecha de referencia de 2000-01-01T00:00:00.00Z. Por ejemplo, si binSize es 10 y unit es year, los períodos de tiempo de ejemplo son:

      • 2000-01-01T00:00:00.00Z

      • 2010-01-01T00:00:00.00Z

      • 2020-01-01T00:00:00.00Z

    • Igual que week, $dateTrunc utiliza una fecha de referencia que se establece en el primer día de la semana más temprano que sea mayor o igual que 2000-01-01. El primer día se establece usando startOfWeek (el valor predeterminado es domingo).

  • Devuelve el límite inferior del período de tiempo en el que se encuentra la fecha. El límite se devuelve como un ISODate.Si el campo binSize es 1, $dateTrunc establece las partes menos significativas (determinadas por la unidad) del ISODate devuelto en 0 y mantiene el resto del ISODate sin cambios.

Si la unidad es:

Si la unidad es:

Crea una colección de cakeSales que incluya ventas de pasteles en el estado de California (CA) y Washington (WA):

db.cakeSales.insertMany( [
{ _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),
state: "CA", price: 13, quantity: 120 },
{ _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),
state: "WA", price: 14, quantity: 140 },
{ _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),
state: "CA", price: 12, quantity: 145 },
{ _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),
state: "WA", price: 13, quantity: 104 },
{ _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),
state: "CA", price: 41, quantity: 162 },
{ _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),
state: "WA", price: 43, quantity: 134 }
] )

La colección cakeSales se utiliza en los siguientes ejemplos.

Este ejemplo utiliza $dateTrunc en una etapa $project para truncar los valores de ventas de pasteles orderDate a dos semanas:

db.cakeSales.aggregate( [
{
$project: {
_id: 1,
orderDate: 1,
truncatedOrderDate: {
$dateTrunc: {
date: "$orderDate", unit: "week", binSize: 2,
timezone: "America/Los_Angeles", startOfWeek: "Monday"
}
}
}
}
] )

En el ejemplo:

  • $project incluye los campos _id, orderDate y truncatedOrderDate en el resultado.

  • $dateTrunc Trunca el campo orderDate a un período de tiempo de 2 binSize week unidad en la zona horaria America/Los_Angeles con startOfWeek establecido en Monday.

En este resultado de ejemplo, el orderDate truncado se muestra en el campo truncatedOrderDate:

[
{
_id: 0,
orderDate: ISODate("2020-05-18T14:10:30.000Z"),
truncatedOrderDate: ISODate("2020-05-11T07:00:00.000Z")
},
{
_id: 1,
orderDate: ISODate("2021-03-20T11:30:05.000Z"),
truncatedOrderDate: ISODate("2021-03-15T07:00:00.000Z")
},
{
_id: 2,
orderDate: ISODate("2021-01-11T06:31:15.000Z"),
truncatedOrderDate: ISODate("2021-01-04T08:00:00.000Z")
},
{
_id: 3,
orderDate: ISODate("2020-02-08T13:13:23.000Z"),
truncatedOrderDate: ISODate("2020-02-03T08:00:00.000Z")
},
{
_id: 4,
orderDate: ISODate("2019-05-18T16:09:01.000Z"),
truncatedOrderDate: ISODate("2019-05-13T07:00:00.000Z")
},
{
_id: 5,
orderDate: ISODate("2019-01-08T06:12:03.000Z"),
truncatedOrderDate: ISODate("2019-01-07T08:00:00.000Z")
}
]

Este ejemplo utiliza $dateTrunc en una etapa $group para truncar los valores de ventas de pasteles orderDate a seis meses y devolver la suma de los valores quantity:

db.cakeSales.aggregate( [
{
$group: {
_id: {
truncatedOrderDate: {
$dateTrunc: {
date: "$orderDate", unit: "month", binSize: 6
}
}
},
sumQuantity: { $sum: "$quantity" }
}
}
] )

En el ejemplo:

  • $group tiene el campo _id configurado en el campo truncatedOrderDate para agrupar los documentos cakeSales, y devuelve la suma de los valores quantity para cada grupo utilizando $sum.

  • $dateTrunc Trunca el campo orderDate a un período de tiempo unitario 6 binSize month.

En este ejemplo de salida, el orderDate truncado se muestra en el campo truncatedOrderDate y la suma quantity se muestra en el campo sumQuantity:

[
{
_id: { truncatedOrderDate: ISODate("2020-01-01T00:00:00.000Z") },
sumQuantity: 224
},
{
_id: { truncatedOrderDate: ISODate("2021-01-01T00:00:00.000Z") },
sumQuantity: 285
},
{
_id: { truncatedOrderDate: ISODate("2019-01-01T00:00:00.000Z") },
sumQuantity: 296
}
]
Califique esta página