Operador Datdiff de MongoDB $

Operador Datdiff de MongoDB $
Para lidar com as datas, o MongoDB tem vários operadores de data diferentes. O operador $ datdiff, que também aceita a expressão de data para lidar com a data, é um desses operadores. A expressão $ datdiff imprime a diferença numérica entre o StartDate e o Enddate expresso nas unidades definidas. A expressão do operador $ datdiff deve conter o parâmetro StartDate, EndDate e. O parâmetro "Filho time" e o parâmetro "startOfweek" são opcionais no operador $ datediff. O algoritmo do operador $ datediff usa o calendário gregoriano para determinar a diferença de data. Além disso, o operador $ datdiff leva apenas anos bisselados e horário de verão, enquanto os segundos de salto não são levados em consideração.

Como usar o operador $ datdiff em mongodb

O operador $ datdiff retorna a diferença entre duas datas na unidade especificada. O Operador $ DATDIFF possui vários parâmetros nos quais os parâmetros StartDate, EndDate e Unit são necessários. Sem esses parâmetros, podemos encontrar o erro do servidor MongoDB. Usamos a coleção "Project" para trabalhar com o $ DATEDIFF Operator. A coleção "Projeto" está inicialmente vazia, que pode ser inserida nos documentos aplicando a seguinte consulta:

dB.Projeto.InsertMany ([

"PID": 1,
"Projeto": "Aplicativo Android",
"Mês": "janeiro",
"Equipe": 10,
"StartDate": isodate ("2020-01-05"),
"ENDDATE": ISODATE ("2021-01-10")
,

"Pid": 2,
"Projeto": "Drone",
"Mês": "fevereiro",
"Equipe": 20,
"StartDate": isodate ("2023-02-01"),
"ENDDATE": ISODATE ("2024-02-28")
,

"Pid": 3,
"Projeto": "Site de compras",
"Mês de março",
"Equipe": 5,
"StartDate": isodate ("2021-03-25"),
"ENDDATE": ISODATE ("2022-03-01")
,

"Pid": 4,
"Projeto": "Gerenciamento de software",
"Mês de maio",
"Equipe": 9,
"StartDate": isodate ("2022-05-01"),
"ENDDATE": ISODATE ("2023-05-31")

]))

A consulta anterior inseriu os documentos na coleção "Project" do mongodb como o resultado é mostrado. Agora, podemos ver que todos os documentos têm dois campos que contêm a data do formato ISO. Usamos esses campos de data sobre o operador $ datediff para descobrir a diferença nessas datas.


reconhecido: verdadeiro,
inserdids:
'0': objectId ("63C53402B91C87F8B6A855F8"),
'1': objectId ("63C53402B91C87F8B6A855F9"),
'2': objectId ("63C53402B91C87F8B6A855FA"),
'3': objectId ("63C53402B91C87F8B6A855FB")

Exemplo 1: Usando o $ datediff em MongoDB para a diferença entre a data

O operador $ datdiff está empregado nos campos "startdate" e "enddate" de todos os documentos da coleção para obter a diferença nessas datas, o que é um valor inteiro. Usamos o método agregado em que o estágio $ do projeto é empregado para incluir os campos. Incluímos os campos StartDate e Enddate, pois o valor de "1" é especificado para eles. Depois disso, inserimos um campo de "resultado" em que o operador $ datdiff é definido com seu parâmetro. Definimos o parâmetro "StartDate" que marca o início do tempo.

Aqui, fornecemos o campo $ StartDate para o parâmetro "StartDate". Em seguida, definimos o parâmetro "enddate" onde o tempo de data do período termina e damos o campo "$ enddate". Depois disso, fornecemos outro parâmetro “Unidade” exigido para o operador $ DATEDIFF ao qual atribuímos um valor de “dia”. Este parâmetro mede o tempo entre o StartDate e o Enddate. O método pretty () de MongoDB gera os resultados do operador $ datdiff de maneira estruturada.

dB.Projeto.agregar(
[[

$ projeto:

Iniciar: "$ StartDate",
Fim: "$ enddate",
resultado:

$ datediff:

StartDate: "$ StartDate",
ENDDATE: "$ ENDDATE",
unidade: "dia"




]))

A diferença entre o StartDate e o Enddate de cada data de documento fornecida é exibida em um valor numérico em relação ao campo "Resultado" de acordo com a unidade especificada no $ DATEDIFF Operator.

[[

_id: objectId ("63c53466b91c87f8b6a855fc"),
Iniciar: Isodate ("2020-01-05T00: 00: 00.000Z "),
Fim: Isodate ("2021-01-10T00: 00: 00.000Z "),
Resultado: Long ("371")
,

_id: objectId ("63C53466B91C87F8B6A855FD"),
Iniciar: Isodate ("2023-02-01T00: 00: 00.000Z "),
Fim: Isodate ("2024-02-28T00: 00: 00.000Z "),
Resultado: Long ("392")
,

_id: objectId ("63C53466B91C87F8B6A85FE"),
Iniciar: Isodate ("2021-03-25T00: 00: 00.000Z "),
Fim: ISODATE ("2022-03-01T00: 00: 00.000Z "),
Resultado: Long ("341")
,

_id: objectId ("63C53466B91C87F8B6A855FF"),
Iniciar: Isodate ("2022-05-01T00: 00: 00.000Z "),
Fim: ISODATE ("2023-05-31T00: 00: 00.000Z "),
Resultado: Long ("395")

]

Exemplo 2: Usando o $ datediff em MongoDB para encontrar a diferença entre a data e um número

Se tentarmos obter a diferença do StartDate do campo numérico, o erro será levantado no MongoDB por causa do valor do argumento inválido. Aqui, definemos o operador $ DATEDIFF dentro do atributo "resultado" do operador $ Project Operator. O operador $ datdiff pega o argumento "startdate" em que o campo "$ startdate" do documento é fornecido. Em seguida, inserimos o "Enddate" onde o campo "Team" é fornecido. O campo de $ Team é armazenado com o valor numérico que não pode ser usado para o operador de diferença pelo operador $ datediff. Em seguida, atribuímos um valor "dia" ao argumento "unidade".

dB.Projeto.agregar(
[[
$ Project:
Resultado:
$ datediff:

StartDate: "$ StartDate",
ENDDATE: "$ equipe",
unidade: "dia"




])).bonito()

Temos um erro de servidor MongoDB a seguir, porque o parâmetro "Enddate" não é um valor de data. Assim, é necessário para o $ DATEDIFF Operador lidar apenas com datas.

MongoserverRor: Erro do PlaneXecutor durante a agregação :: causado por :: $ datediff exige 'enddate' como uma data, mas obteve int int.

Exemplo 3: Usando o $ datediff em MongoDB para subtrair o Enddate do StartDate

O próximo caso do operador $ datdiff é onde mudamos os valores dos parâmetros "StartDate" e "EndDate". Então, os resultados gerados estão nos valores negativos. Vamos ter a seguinte consulta de operador $ datediff, onde implantamos o operador $ datdiff. O operador $ datdiff é inserido com o parâmetro "startdate", onde o campo "Enddate" é atribuído. Por outro. O operador $ datdiff retorna a diferença entre os valores "Enddate" dos valores "startDate". Depois disso, definimos o parâmetro da unidade com o "dia" para medir os períodos fornecidos das datas.

dB.Projeto.agregar(
[[
$ Project:
Resultado:
$ datediff:

StartDate: "$ ENDDATE",
ENDDATE: "$ StartDate",
unidade: "dia"




]
).bonito()

O operador $ datdiff gera as datas do documento no campo "Resultado", onde todos os valores são de forma negativa devido aos valores do argumento da chave.

[[
_id: objectId ("63C534666B91C87F8B6A855FC"), resultado: Long ("-371"),
_id: objectId ("63C534666b91c87f8b6a855fd"), resultado: long ("-392"),
_id: objectId ("63C53466B91C87F8B6A855FE"), resultado: Long ("-341"),
_id: objectId ("63C53466B91C87F8B6A855FF"), resultado: Long ("-395")
]

Exemplo 4: Usando o $ datediff em MongoDB com os diferentes valores unitários

A diferença de horário que é medida em unidades inteiras é retornada pela expressão $ datediff. Uma unidade não tem peças fracionárias. Não há meio ano ao contar em anos. Executamos a consulta desta declaração em que o argumento da “unidade” do Operador Datediff é usado com valores diferentes. Criamos o campo "UNIDADE ANO" dentro do operador de projeto $ e empregamos o operador $ DATEDIFF lá. O Operador $ DATDIFF leva os valores contra os argumentos "StartDate" e "EndDate".

Observe que definimos o período "Ano" no argumento "Unidade". A diferença entre as datas especificadas é avaliada com base na unidade do ano. Depois disso, temos outro campo que é "unidade do mês", onde o operador $ datdiff é especificado com o valor "unidade" "mês". Em seguida, o campo "DayUnit" do operador de projeto $ é chamado de $ datediff com o valor "unidade" como "dia" para medir a diferença de período das datas com a unidade diurna.

dB.Projeto.agregar(
[[

$ projeto:

StartDate: "$ StartDate",
ENDDATE: "$ ENDDATE",
UNIDADE DE ANO:

$ datediff:

StartDate: "$ StartDate",
ENDDATE: "$ ENDDATE",
Unidade: "Ano"

,
MonthUnit:

$ datediff:

StartDate: "$ StartDate",
ENDDATE: "$ ENDDATE",
Unidade: "mês"

,
DaysUnit:

$ datediff:

StartDate: "$ StartDate",
ENDDATE: "$ ENDDATE",
unidade: "dia"




]
)

As diferenças de data são retornadas nos valores unitários fornecidos pelo $ DATEDIFF Operator.

[[

_id: objectId ("63c53466b91c87f8b6a855fc"),
StartDate: Isodate ("2020-01-05T00: 00: 00.000Z "),
ENDDATE: ISODATE ("2021-01-10T00: 00: 00.000Z "),
ANO UNIDADE: LONG ("1"),
Mês Unidade: Long ("12"),
Daysunit: Long ("371")
,

_id: objectId ("63C53466B91C87F8B6A855FD"),
StartDate: Isodate ("2023-02-01T00: 00: 00.000Z "),
ENDDATE: ISODATE ("2024-02-28T00: 00: 00.000Z "),
ANO UNIDADE: LONG ("1"),
Mês Unidade: Long ("12"),
Daysunit: Long ("392")
,

_id: objectId ("63C53466B91C87F8B6A85FE"),
StartDate: Isodate ("2021-03-25T00: 00: 00.000Z "),
ENDDATE: ISODATE ("2022-03-01T00: 00: 00.000Z "),
ANO UNIDADE: LONG ("1"),
Mês Unidade: Long ("12"),
Daysunit: Long ("341")
,

_id: objectId ("63C53466B91C87F8B6A855FF"),
StartDate: Isodate ("2022-05-01T00: 00: 00.000Z "),
ENDDATE: ISODATE ("2023-05-31T00: 00: 00.000Z "),
ANO UNIDADE: LONG ("1"),
Mês Unidade: Long ("12"),
Daysunit: Long ("395")

]

Conclusão

O artigo explorou o novo operador MongoDB $ datdiff, onde a operação de diferença é realizada entre as duas datas. Usamos o operador $ datediff para obter a diferença entre os valores das datas especificadas. O Operador $ DATDIFF leva os parâmetros que são especificados com os valores da data do documento junto com o horário da unidade. Também executamos alguns exemplos em que o operador $ datediff é usado em diferentes casos para retornar o resultado dentro de um período unitário.