MongoDB $ Datetrunc

MongoDB $ Datetrunc

MongoDB proporciona el operador agregado de $ Datetrunc para truncar los datos de acuerdo con la fecha dada. El operador $ Datetrunc solo toma el valor de fecha única para truncarlo en formato ISO. El argumento de "fecha" del $ datetrunc toma los valores de la fecha junto con la unidad de tiempo. El operador $ Datetrunc debe exigir que estas entradas truncen la fecha. Además, también podemos usar argumentos opcionales como zona horaria, bensize y comenzar deweek para bajar el límite de la fecha dentro de un rango de tiempo. El operador $ Datetrunc divide el tiempo en intervalos de tiempo de binsize en la unidad de tiempo elegida para el cálculo.

Cómo usar el operador $ Datetrunc en MongoDB?

El operador $ Datetrunc se usa en MongoDB para truncar la fecha dada. Aquí, estamos trabajando con la colección "Flores" cuyos documentos son utilizados por el operador $ Datetrunc para la demostración. Para esto, tenemos que agregar los documentos dentro de la colección "Flores" empleando el método InsertMany (). La salida después de ejecutar el comando insertar documentos muestra que los documentos ahora se almacenan dentro de la colección "flores".

db.Flores.insertmany ([
_id: 0, tipo: "rosa", orden: nueva fecha ("2023-03-23T15: 06: 20Z"), Cantidad: 100,
_id: 1, tipo: "Lilly", Orden: nueva fecha ("2021-07-19t12: 11: 10z"), Cantidad: 150,
_id: 2, tipo: "tulip", orden: nueva fecha ("2022-12-12t16: 14: 30z"), Cantidad: 99,
_id: 3, tipo: "Whiterose", Orden: nueva fecha ("2023-08-13t05: 10: 20z"), Cantidad: 500,
_id: 4, tipo: "lavanda", pedido: nueva fecha ("2020-01-01T19: 30: 10z"), Cantidad: 200,
_id: 5, Tipo: "Sunflower", Orden: nueva fecha ("2021-03-19t12: 12: 12z"), Cantidad: 50
])

Tenga en cuenta que hay un campo dentro del documento que se establece con los valores de fecha. Vamos a truncar estas fechas utilizando el operador $ Datetrunc de MongoDB.

WriteConCERRORS: [],
Insertedids: [
índice: 0, _id: 0,
índice: 1, _id: 1,
índice: 2, _id: 2,
índice: 3, _id: 3,
índice: 4, _id: 4,
índice: 5, _id: 5
],
Ninserted: 5,
Nupserted: 0,
nmatched: 0,
nmodified: 0,
Nremoved: 0,
Upsert: []

Ejemplo n. ° 1: Uso del operador $ Datetrunc para truncar la fecha en MongoDB

Aquí, vamos a implementar el operador $ Datetrunc que simplemente recupera la fecha truncada de la fecha especificada. Hemos dado una consulta sobre el caparazón de MongoDB donde se emplea un método agregado para llevar a cabo los otros operadores. Llamamos al método $ proyecto para incluir los campos "_id" y "_order" del documento coincidente. Luego, establecemos otro campo "TruncatedResult" que mostró los resultados del operador $ Datetrunc. Hemos definido el operador $ Datetrunc que se pasa con el parámetro "fecha" y especificado con el campo "$ orden" que tiene valores de fecha. El parámetro $ fecha del operador $ Datetrunc truncó la fecha con UTC. A continuación, hemos pasado el parámetro "Unidad" donde se expresa la hora como una cadena "día". El valor del "día" indica que isodate para el comienzo del día que se devuelve por $ Datetrunc en la fecha.

db.Flores.agregado ([

$ Proyecto:
_id: 1,
Orden: 1,
truncatedDate:
$ datetrunc:
Fecha: "$ orden", unidad: "día"




])

La salida del operador de Datetrunc anterior mostró las fechas truncadas de todos los "orden" del campo de documento en el campo truncado.

[

_id: 0,
Orden: Isodate ("2023-03-23T15: 06: 20.000z "),
truncatedDate: isodate ("2023-03-23T00: 00: 00.000z ")
,

_id: 1,
Orden: Isodate ("2021-07-19T12: 11: 10.000z "),
truncatedDate: isodate ("2021-07-19T00: 00: 00.000z ")
,

_id: 2,
Orden: Isodate ("2022-12-12T16: 14: 30.000z "),
truncatedDate: isodate ("2022-12-12T00: 00: 00.000z ")
,

_id: 3,
Pedido: Isodate ("2023-08-13T05: 10: 20.000z "),
truncatedDate: isodate ("2023-08-13T00: 00: 00.000z ")
,

_id: 4,
Pedido: Isodate ("2020-01-01T19: 30: 10.000z "),
truncatedDate: isodate ("2020-01-01T00: 00: 00.000z ")
,

_id: 5,
Orden: Isodate ("2021-03-19T12: 12: 12.000z "),
truncatedDate: isodate ("2021-03-19T00: 00: 00.000z ")

]

Ejemplo # 2: Uso del operador $ Datetrunc con el argumento de binsize para truncar la fecha en MongoDB

El argumento de binsize opcional del operador $ Datetrunc es un valor de tiempo que se expresa como una expresión numérica. La expresión numérica debe ser un entero positivo no cero. Cuando el argumento de binsize y la unidad se usa juntos, definen el período para la evaluación del operador $ Datetrunc. Hemos tomado el documento cuyo valor de "tipo" de campo "Whiterose", que coincide con la etapa de $ Match aquí.

Después de esto, el operador $ Datetrunc en el operador $ Proyecto se ha definido para truncar la fecha utilizando las entradas proporcionadas. El $ Datetrunc primero toma la "fecha" de entrada donde se proporciona el campo "$ orden", ya que contiene los valores de la fecha. Luego, hemos establecido la entrada "Unidad" con el tiempo "hora" y la entrada "binsize" con el valor numérico "2".

db.Flores.agregado ([
$ Match: "Type": "Whiterose",

$ Proyecto:
_id: 1,
Orden: 1,
truncatedResult:
$ datetrunc:
Fecha: "$ pedido", unidad: "hora", binsize: 2




])

El tiempo de "unidad" es "hora" y el "binsize" tiene un valor de "2". Por lo tanto, el tiempo entre la fecha truncada devuelve del operador $ Datetrunc y la fecha del pedido es de dos horas.

[

_id: 3,
Pedido: Isodate ("2023-08-13T05: 10: 20.000z "),
TruncatedResult: Isodate ("2023-08-13T04: 00: 00.000z ")

]

Ejemplo # 3: Uso del operador $ Datetrunc con el argumento StartOfWeek para truncar la fecha en MongoDB

Tenemos otro argumento de opción "StartOfWeek" del operador $ Datetrunc que especifica el comienzo de la semana. El argumento "StartOfWeek" se realiza solo cuando la "Unidad" es la semana. Aquí, adquirimos esos documentos del operador $ Match que el operador $ NIN no ha seleccionado en la expresión. Luego, implementamos el operador $ Datetrunc en el campo de la etapa de proyecto $ "Truncdate". Los argumentos se pasan dentro del operador $ Datetrunc para reducir la fecha. El argumento opcional "startoffweek" también se establece dentro del operador $ datetrunc con la semana "miércoles". El operador $ Datetrunc trunca el campo "Orden" a un período de tiempo "1" de "1" bola de "Semana" en la zona horaria de UTC con el miércoles como StartOfweek.

db.Flores.agregado ([
$ Match: "_id": $ nin: [1, 3, 5],

$ Proyecto:
_id: 1,
Orden: 1,
Truncdate:
$ datetrunc:
Fecha: "$ pedido", unidad: "Semana", Binsize: 1,
TimeZone: "UTC", StartOfWeek: "Miércoles"




])

Los resultados del operador $ Datetrunc se generan con las fechas truncadas en un día "StartOfweek", así como los valores de fecha reales.

[

_id: 0,
Orden: Isodate ("2023-03-23T15: 06: 20.000z "),
Truncdate: Isodate ("2023-03-22T00: 00: 00.000z ")
,

_id: 2,
Orden: Isodate ("2022-12-12T16: 14: 30.000z "),
Truncdate: Isodate ("2022-12-07T00: 00: 00.000z ")
,

_id: 4,
Pedido: Isodate ("2020-01-01T19: 30: 10.000z "),
Truncdate: Isodate ("2020-01-01T00: 00: 00.000z ")

]

Ejemplo # 4: Uso del operador $ Datetrunc para devolver NULL en MongoDB

El operador $ Datetrunc también devuelve el valor nulo en un caso en que el "startoffweek" ingresa el campo que está vacío o asignado a NULL y cuando el argumento de la unidad tiene el valor establecido como "Semana" y StartOfweek no se especifica o tiene un NULL valor. Consideremos esta declaración con el script de ejemplo de MongoDB. Tenemos una nueva inclusión del campo "TruncatedOutput" en la etapa del proyecto $ donde hemos llevado a cabo el operador $ DatETRUNNC. El operador $ Datetrunc toma la entrada "Fecha" de entrada con el campo "Orden", la unidad como una semana y Binsize "2" de una zona horaria "America/Los_angeles". Tenga en cuenta que no hemos aprobado el operador $ Datetrunc con el argumento "StartOfWeek", ya que la semana se asigna al parámetro "Unidad".

db.Flores.agregado ([

$ Proyecto:
_id: 1,
Orden: 1,
truncatedOutput:
$ datetrunc:
Fecha: "$ OrderDate", Unidad: "Semana", Binsize: 2,
TimeZone: "América/Los_angeles"




])

Allí, obtuvimos el resultado nulo en el campo "truncado, output" porque no hemos ingresado el argumento "StartOfweek" en el operador $ DatETREunc a pesar de que la unidad es una semana.

[

_id: 0,
Orden: Isodate ("2023-03-23T15: 06: 20.000z "),
truncatedOutput: nulo
,

_id: 1,
Orden: Isodate ("2021-07-19T12: 11: 10.000z "),
truncatedOutput: nulo
,

_id: 2,
Orden: Isodate ("2022-12-12T16: 14: 30.000z "),
truncatedOutput: nulo
,

_id: 3,
Pedido: Isodate ("2023-08-13T05: 10: 20.000z "),
truncatedOutput: nulo
,

_id: 4,
Pedido: Isodate ("2020-01-01T19: 30: 10.000z "),
truncatedOutput: nulo
,

_id: 5,
Orden: Isodate ("2021-03-19T12: 12: 12.000z "),
truncatedOutput: nulo

]

Ejemplo # 5: Uso del operador $ Datetrunc para truncar la fecha dentro del operador $ Group en MongoDB

Hemos utilizado el operador $ Datetrunc en la etapa de grupo $ de MongoDB que trunca la fecha dentro de la clave del grupo y obtiene los resultados de suma del campo especificado. Hemos implementado la etapa de grupo $ y proporcionamos una clave de grupo "_id" donde se establece el nuevo campo "Truncdate". Para el operador $ Datetrunc, hemos ingresado la "fecha" como un campo de "pedido" con el tiempo de la unidad de "mes" y el binsize de "5". Después de eso, establecemos otro campo "AddQuantity" donde el operador $ suma se asigna con el campo $ Qty para la operación de adición.

db.Flores.agregado ([

$ grupo:
_identificación:
DatETrunc:
$ datetrunc:
Fecha: "$ orden", unidad: "mes", binsize: 5


,
AddQuantity: $ sum: "$ Qty"


])

La fecha del campo "Orden" se trunca a cinco meses utilizando el operador $ Datetrunc en una etapa de grupo $ y el total de los valores de la cantidad también se devuelve en la salida.

[

_ID: datETRUNC: isodate ("2020-01-01T00: 00: 00.000z "),
Addquantity: 200
,

_ID: datETRUNC: isodate ("2020-11-01T00: 00: 00.000z "),
Addquantity: 50
,

_id: datETRUNC: isodate ("2022-12-01T00: 00: 00.000z "),
Addquantity: 199
,

_id: datETREunc: isodate ("2021-04-01T00: 00: 00.000z "),
AddQuantity: 150
,

_id: datETREunc: isodate ("2023-05-01T00: 00: 00.000z "),
AddQuantity: 500

]

Conclusión

Hemos cubierto un operador de MongoDB $ Datetrunc que funciona con la fecha para truncarlos. Hemos explorado diferentes argumentos del operador $ Datetrunc con ejemplos. El operador $ Datetrunc solo trata con los documentos de campo de fecha en la colección de MongoDB. El operador $ Datetrunc se usa aquí con el argumento "binsize" y el argumento "StartOfweek" que es opcional pero juega un papel importante al truncar las fechas en MongoDB.