MongoDB $ operador de fechas

MongoDB $ operador de fechas
Para lidiar con las fechas, MongoDB tiene varios operadores de fecha diferentes. El operador $ fatediff, que también acepta la expresión de la fecha para tratar la fecha, es uno de estos operadores. La expresión de $ fatediff $ imprime la diferencia numérica entre la fecha de inicio y la fecha final expresada en las unidades definidas. La expresión del operador $ fatediff debe contener la fecha de inicio, la década final y el parámetro de la unidad. El parámetro "zona horaria" y "startOfweek" son opcionales en el operador $ fechado. El algoritmo del operador $ fatediff utiliza el calendario gregoriano para determinar la diferencia de fecha. Además, el operador de fechas de $ solo toma años de salto y luz del día, mientras que los segundos de salto no se tienen en cuenta.

Cómo usar el operador $ fatediff en MongoDB

El operador $ fechado devuelve la diferencia entre dos fechas en la unidad dada. El operador $ fatediff tiene varios parámetros en los que se requieren los parámetros de inicio, la fecha final y la unidad. Sin estos parámetros, podemos encontrar el error del servidor MongoDB. Utilizamos la colección "Proyecto" para trabajar con el operador $ Datediff. La colección "Proyecto" está inicialmente vacía que se puede insertar con los documentos aplicando la siguiente consulta:

db.Proyecto.insertmany ([

"Pid": 1,
"Proyecto": "Aplicación Android",
"Mes": "Enero",
"Equipo": 10,
"StartDate": Isodate ("2020-01-05"),
"End Data": Isodate ("2021-01-10")
,

"Pid": 2,
"Proyecto": "Drone",
"Mes": "Febrero",
"Equipo": 20,
"StartDate": Isodate ("2023-02-01"),
"End Data": Isodate ("2024-02-28")
,

"Pid": 3,
"Proyecto": "Sitio web de compras",
"Mes de marzo",
"Equipo": 5,
"StartDate": Isodate ("2021-03-25"),
"End Data": Isodate ("2022-03-01")
,

"Pid": 4,
"Proyecto": "Gestión de software",
"Mes de mayo",
"Equipo": 9,
"StartDate": Isodate ("2022-05-01"),
"End Date": Isodate ("2023-05-31")

])

La consulta anterior insertó los documentos en la colección "Proyecto" de MongoDB como se muestra el resultado. Ahora, podemos ver que todos los documentos tienen dos campos que contienen la fecha de formato ISO. Utilizamos estos campos de fecha sobre el operador $ fatediff para averiguar la diferencia en estas fechas.


Reconocido: verdadero,
insertedids:
'0': ObjectId ("63C53402B91C87F8B6A855F8"),
'1': ObjectId ("63C53402B91C87F8B6A855F9"),
'2': ObjectId ("63C53402B91C87F8B6A855FA"),
'3': ObjectId ("63C53402B91C87F8B6A855FB")

Ejemplo 1: Uso del $ fechediff en MongoDB para la diferencia entre la fecha

El operador $ fatediff se emplea en los campos "start date" y "end date" de todos los documentos de la colección para obtener la diferencia en estas fechas, que es un valor entero. Utilizamos el método agregado donde se emplea la etapa de proyecto $ para incluir los campos. Incluimos los campos de inicio y fecha final, ya que se les especifica el valor de "1". Después de eso, insertamos un campo de "resultado" donde el operador $ fatediff se define con su parámetro. Establecemos el parámetro "StartDate" que marca el comienzo del tiempo.

Aquí, proporcionamos el campo $ StartDate al parámetro "StartDate". Luego, establecemos el parámetro "End Datate" donde finaliza la hora del período de fecha, y damos el campo "$ end date". Después de eso, proporcionamos otro parámetro de "unidad" requerido al operador $ fatediff al que asignamos un valor de "día". Este parámetro mide el tiempo entre la fecha de inicio y la fecha end. El método bonito () de MongoDB genera los resultados del operador $ fechado de manera estructurada.

db.Proyecto.agregar(
[

$ Proyecto:

Inicio: "$ StartDate",
Fin: "$ EndDate",
resultado:

$ Datediff:

StartDate: "$ StartDate",
End Date: "$ EndDate",
Unidad: "Día"




])

La diferencia entre la fecha de inicio y la fecha final de cada fecha de documento proporcionada se muestra en un valor numérico contra el campo "Resultado" de acuerdo con la unidad especificada en el operador $ fatediff.

[

_id: ObjectId ("63C53466B91C87F8B6A855FC"),
Inicio: Isodate ("2020-01-05T00: 00: 00.000z "),
Fin: Isodate ("2021-01-10T00: 00: 00.000z "),
Resultado: largo ("371")
,

_id: ObjectId ("63C53466B91C87F8B6A855FD"),
Inicio: Isodate ("2023-02-01T00: 00: 00.000z "),
Fin: Isodate ("2024-02-28T00: 00: 00.000z "),
Resultado: largo ("392")
,

_id: ObjectId ("63C53466B91C87F8B6A855FE"),
Inicio: Isodate ("2021-03-25T00: 00: 00.000z "),
Fin: Isodate ("2022-03-01T00: 00: 00.000z "),
Resultado: largo ("341")
,

_id: ObjectId ("63C53466B91C87F8B6A855FF"),
Inicio: Isodate ("2022-05-01T00: 00: 00.000z "),
Fin: Isodate ("2023-05-31T00: 00: 00.000z "),
Resultado: largo ("395")

]

Ejemplo 2: Uso del $ fechado en MongoDB para encontrar la diferencia entre la fecha y un número

Si intentamos obtener la diferencia de StartDate desde el campo Número, el error se plantea en MongoDB debido al valor de argumento no válido. Aquí, establecemos el operador $ fatediff dentro del atributo "resultado" del operador $ proyecto. El operador $ fatediff toma el argumento "StartDate" donde se proporciona el campo "$ startdate" del documento. Luego, ingresamos la "End Data" donde se proporciona el campo "Equipo". El campo $ Team se almacena con el valor numérico que no puede ser utilizado para el operador de diferencia por el operador $ fatediff. Luego, asignamos un valor de "día" al argumento "Unidad".

db.Proyecto.agregar(
[
$ Project:
resultado:
$ Datediff:

StartDate: "$ StartDate",
End Date: "$ Team",
Unidad: "Día"




]).bonito()

Tenemos un siguiente error del servidor MongoDB porque el parámetro "Endetate" no es un valor de fecha. Por lo tanto, se requiere que el operador $ fatediff solo se ocupe de las fechas.

MongoserverError: PlanExecutor Error durante la agregación :: causada por :: $ Datediff requiere 'End Data' para ser una fecha, pero obtuve int.

Ejemplo 3: Uso del $ fatediff en MongoDB para restar la fecha final de la fecha de inicio

El siguiente caso del operador $ fatediff es donde cambiamos los valores de los parámetros "start date" y "end date". Entonces, los resultados generados están en los valores negativos. Tengamos la siguiente consulta del operador de fechas de $ donde implementamos el operador $ fatshiff. El operador $ fatediff se ingresa con el parámetro "StartDate" donde se asigna el campo "End Data". Por otro lado, damos un campo "StartDate", que es el tiempo de inicio del parámetro "End Date". El operador $ fatediff devuelve la diferencia entre los valores "End Date" de los valores "StartDate". Después de eso, establecemos el parámetro de la unidad con el "día" para medir los períodos dados de las fechas.

db.Proyecto.agregar(
[
$ Project:
resultado:
$ Datediff:

StartDate: "$ EndDate",
End Date: "$ StartDate",
Unidad: "Día"




]
).bonito()

El operador $ fatediff emite las fechas del documento en el campo "Resultado" donde todos los valores están en forma negativa debido a los valores del argumento del interruptor.

[
_id: ObjectId ("63C53466B91C87F8B6A855FC"), resultado: Long ("-371"),
_id: objectId ("63C53466B91C87F8B6A855FD"), resultado: Long ("-392"),
_id: objectId ("63C53466B91C87F8B6A855FE"), resultado: Long ("-341"),
_id: ObjectId ("63C53466B91C87F8B6A855FF"), resultado: Long ("-395")
]

Ejemplo 4: Uso del $ fechado en MongoDB con los diferentes valores de la unidad

La diferencia de tiempo que se mide en las unidades enteras se devuelve por la expresión de $ fatediff. Una unidad no tiene piezas fraccionales. No hay medio año cuando se cuenta en años. Ejecutamos la consulta de esta declaración donde el argumento de "Unidad" del operador Fatediff $ se usa con diferentes valores. Creamos el campo "Anyunit" dentro del operador de proyectos $ y empleamos al operador de fechas de $. El operador $ fatediff toma los valores contra los argumentos "start date" y "end date".

Tenga en cuenta que establecemos el período de "año" en el argumento de la "unidad". La diferencia entre las fechas especificadas se evalúa en función de la unidad de año. Después de eso, tenemos otro campo que es "Monthunit" donde el operador de fechas $ se especifica con el valor de "unidad" "mes". A continuación, el campo "Dayunit" del operador de proyecto $ se llama $ fechado con el valor de "unidad" como "día" para medir la diferencia de período de las fechas con la unidad diurna.

db.Proyecto.agregar(
[

$ Proyecto:

StartDate: "$ StartDate",
End Date: "$ EndDate",
Anualización:

$ Datediff:

StartDate: "$ StartDate",
End Date: "$ EndDate",
Unidad: "Año"

,
Monthunit:

$ Datediff:

StartDate: "$ StartDate",
End Date: "$ EndDate",
Unidad: "Mes"

,
Daysunit:

$ Datediff:

StartDate: "$ StartDate",
End Date: "$ EndDate",
Unidad: "Día"




]
)

Las diferencias de fecha son devueltas en los valores unitarios dados por el operador $ fechado.

[

_id: ObjectId ("63C53466B91C87F8B6A855FC"),
StartDate: Isodate ("2020-01-05T00: 00: 00.000z "),
End Data: Isodate ("2021-01-10T00: 00: 00.000z "),
Anualización: Long ("1"),
Monthunit: Long ("12"),
DaysUnit: Long ("371")
,

_id: ObjectId ("63C53466B91C87F8B6A855FD"),
StartDate: Isodate ("2023-02-01T00: 00: 00.000z "),
End Date: Isodate ("2024-02-28T00: 00: 00.000z "),
Anualización: Long ("1"),
Monthunit: Long ("12"),
DaysUnit: Long ("392")
,

_id: ObjectId ("63C53466B91C87F8B6A855FE"),
StartDate: isodate ("2021-03-25T00: 00: 00.000z "),
End Data: Isodate ("2022-03-01T00: 00: 00.000z "),
Anualización: Long ("1"),
Monthunit: Long ("12"),
DaysUnit: Long ("341")
,

_id: ObjectId ("63C53466B91C87F8B6A855FF"),
StartDate: Isodate ("2022-05-01T00: 00: 00.000z "),
End Data: Isodate ("2023-05-31T00: 00: 00.000z "),
Anualización: Long ("1"),
Monthunit: Long ("12"),
DaysUnit: Long ("395")

]

Conclusión

El artículo exploró el nuevo operador de fatería MongoDB $, donde se realiza la operación de diferencia entre las dos fechas. Utilizamos el operador $ fechadiff para obtener la diferencia entre los valores de las fechas especificadas. El operador $ fatediff toma los parámetros que se especifican con los valores de fecha del documento junto con el tiempo de la unidad. También ejecutamos algunos ejemplos en los que el operador $ fatediff se usa en diferentes casos para devolver el resultado dentro de un período unitario.