Docs Menu
Docs Home
/ /
Operadores de tuberías de agregación

$dateTrunc (operador de agregació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
Obligatorio / Opcional
Descripción

fecha

Requerido

La fecha que se truncará, especificada en UTC. La fecha puede ser cualquier expresión que se resuelva en una fecha, una marca de tiempo o un ID 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

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

Opcional

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

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

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 se realiza en $dateTrunc UTC.

Formato
Ejemplos

Identificador de zona horaria de Olson

  • America/New_York

  • Europe/London

  • GMT

Desplazamiento UTC

  • +/-[hh]:[mm] (ejemplo, +04:45)

  • +/-[hh][mm] (ejemplo, -0530)

  • +/-[hh] (ejemplo, +03)

Opcional

El inicio de la semana. Se usa cuando la unidad weekes. El valor predeterminado Sunday es.

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)

Tip

$dateTrunc:

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

Por ejemplo:

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

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

$dateTrunc:

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

    Los períodos de tiempo comienzan en una fecha de referencia, determinada por 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 unidad es year, los periodos de tiempo de ejemplo son:

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

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

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

    • Igual a week, $dateTrunc utiliza una fecha de referencia que se establece en el primer día de la semana más temprano que sea igual o posterior a 2000-01-01. El primer día se establece usando startOfWeek (el valor por defecto 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 una ISODate. Si el campo binSize 1 es, establece las partes$dateTrunc menos significativas (determinadas por la unidad) de la 0 ISODate devuelta en y mantiene el resto de la ISODate sin cambios.

Si unidad es:

Si 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 para truncar los valores de ventas de $project 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 la salida.

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

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 para truncar los valores de ventas de $group pasteles orderDate a seis meses y devolver la suma de los quantity valores:

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

En el ejemplo:

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

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

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

Volver

$dateToString (operador de agregación)

En esta página