Operadores de Dateadd e $ Datesubtract de MongoDB $

Operadores de Dateadd e $ Datesubtract de MongoDB $
O MongoDB fornece vários operadores de pipeline de agregação para diferentes fins. Entre todos os operadores, discutiremos o $ DATADD e os $ Datesubtract Operators of MongoDB, respectivamente. O Operador $ DATADD aumenta o objeto Data em uma quantidade predeterminada de unidades de tempo. Enquanto o operador de datetract $ é usado para diminuir os objetos da data pela quantidade fornecida de tempo. O resultado retornado dos operadores $ DATADD e $ Datesubtract é sempre um objeto de data, independentemente do tipo de dados de entrada.

Como usar os operadores MongoDB $ DATADD e $ Datesubtract

Aqui, usamos os $ DATADD e $ Datesubtract Operadores em MongoDB, que retornam as datas esperadas de acordo com o operador especificado. Considere a coleção "OnLinedElivery", onde inserimos alguns documentos com o método InsertMany (). Esses documentos são usados ​​sobre os operadores $ DATADD e $ Datesubtract para demonstrar seu desempenho no MongoDBB.

dB.onLinedelivery.InsertMany (
[[
Id: 05,
OrderDate: Isodate ("2021-12-30"),
PAGENSDATE: ISODATE ("2022-02-19T15: 20: 00"),
Localização: "America/New_york",
Id: 09,
OrderDate: Isodate ("2022-01-18"),
PAGENSDATE: ISODATE ("2023-01-04T16: 10: 00"),
Localização: "America/New_york",
Id: 45,
OrderDate: Isodate ("2020-03-24"),
PAGENSDATE: ISODATE ("2021-05-31T21: 00: 00"),
Localização: "America/New_york",
Id: 55,
OrderDate: Isodate ("2023-09-20"),
PAGENDDATE: ISODATE ("2023-12-31T21: 00: 00"),
Localização: "America/New_york"
]
)

Após a inserção dos documentos anteriores na coleção "OnLineDelivery", a saída é representada como no seguinte, que reconhece que os documentos são adicionados:


reconhecido: verdadeiro,
inserdids:
'0': objectId ("63C298E9AD100B03EAD18BEE"),
'1': objectId ("63C298E9AD100B03EAD18BEF"),
'2': objectId ("63C298E9AD100B03EAD18BF0"),
'3': objectId ("63C29CEFAD100B03EAD18BF4")

Exemplo 1: Usando o Operador $ DATADD em MongoDB

O operador $ DATADD é usado para configurar a data futura da data original especificada. Aqui, o operador $ DATADD está empregado no campo de operador de projeto $, "DeliveryDate". Queremos a data de entrega esperada da data do pedido. Portanto, dentro do operador $ DATADD, definimos o parâmetro "startDate" necessário com o campo "OrderDate". O parâmetro "startdate" deve ser a data de início no formato UTC. Depois disso, temos um parâmetro "unidade" que é especificado com o valor "dia". O parâmetro "unidade" indica o incremento de tempo que é anexado ao "startdate". Em seguida, fornecemos o parâmetro "quantidade" com o número "4" que adiciona quatro dias ao "startdate".

dB.onLinedelivery.agregar(
[[

$ projeto:

Data de entrega:

$ DATADD:

StartDate: "$ orderdate",
unidade: "dia",
Valor: 4




]))

As datas do pedido são incrementadas por uma unidade "4" que é exibida no campo "DeliveryDate". Essas datas são os tempos esperados para entregar o pedido.

[[

_id: objectId ("63C298E9AD100B03EAD18BEE"),
DeliveryDate: Isodate ("2022-01-03T00: 00: 00.000Z ")
,

_id: objectId ("63C298E9AD100B03EAD18BEF"),
DeliveryDate: Isodate ("2022-01-22T00: 00: 00.000Z ")
,

_id: objectId ("63C298E9AD100B03EAD18BF0"),
DeliveryDate: Isodate ("2020-03-28T00: 00: 00.000Z ")
,

_id: objectId ("63C29CEFAD100B03EAD18BF4"),
DeliveryDate: Isodate ("2023-09-24T00: 00: 00.000Z ")

]

Exemplo 2: Usando o operador $ DATADD em MongoDB para filtrar uma variedade de data

Usamos o $ DATADD em um operador de match $ para construir um filtro que corresponda aos documentos dentro de uma faixa de datas que é determinada por um StartDate e um período de tempo especificado pelo $ DATADD Operator. Considere o script de MongoDB. Temos um estágio de Match $ dentro do método agregado. O estágio $ da partida é definido com o operador $ exp, onde a expressão condicional de $ GT é especificada. O operador $ GT corresponde ao documento que satisfaz a condição fornecida. Definimos o campo $ PAGENDATE no operador $ GT, que é comparado com a data obtida do operador $ DATADD.

Definimos o "StartDate" com os parâmetros "OrderDate" para o operador $ DATADD. A "unidade" é dada como "mês" e a "quantidade" a ser adicionada nas datas é dada como "13". Aqui, os documentos cujas datas de entrega são maiores que "13" meses do "OrderDate" são passadas para o operador de projeto $. Em seguida, o operador $ projeto é implantado com o campo "Ordem" que tem a expressão do operador $ DateToString para transformar as datas em um formato melhor legível.

dB.onLinedelivery.agregar(
[[

Match $:

$ EXPR:

$ gt:
["$ PAGENDATE",

$ DATADD:

StartDate: "$ orderdate",
Unidade: "mês",
Valor: 13


]


,

$ projeto:

_id: 0,
OrderDate: 1,
Ordem:

$ dateToString:

formato: "%y-%m-%d",
Data: "$ orderdate"




]))

Ao executar a consulta anterior, temos dois registros do operador $ DATADD que satisfaz a condição.

[[

OrderDate: Isodate ("2020-03-24T00: 00: 00.000Z "),
Ordem: '2020-03-24'
,

OrderDate: Isodate ("2020-03-24T00: 00: 00.000Z "),
Ordem: '2020-03-24'

]

Exemplo 3: Usando o Operador $ DATADD em MongoDB por uma hora

O $ DATADD Operator utiliza o tempo para executar os cálculos quando um fuso horário é definido. Aqui, usamos o operador $ DATADD para incrementar a data em uma hora. Para isso, temos que modificar o parâmetro "Unidade" do Operador $ DATADD. Demos um novo campo de “horas” no operador de projeto $. O campo "Horário" é definido ainda mais pelo operador "$ datetoString" para a conversão da data no formato String, que é retornado pelo Operador $ DATADD. O operador $ DATADD é especificado com o "StartDate", onde o campo $ orderdate é fornecido. Em seguida, usamos o parâmetro "Unidade" para definir a "hora" lá. Depois disso, definimos o parâmetro "Valor" como "24" e definimos o "fuso horário" com o campo "$ localização" quando o $ DATADD Operator incrementa a data em uma hora.

dB.onLinedelivery.agregar(
[[

$ projeto:

horas:

$ dateToString:

formato: "%y-%m-%d%h:%m",
data:

$ DATADD:

StartDate: "$ orderdate",
Unidade: "Hora",
Valor: 24,
fuso horário: "$ localização"






]
).bonito()

Recuperamos as mesmas datas que as datas originais, porque o operador $ DATADD adicionou as datas por horas no número “24” do número.


_id: objectId ("63C298E9AD100B03EAD18BEE"),
Horário: '2021-12-31 00:00'
,

_id: objectId ("63C298E9AD100B03EAD18BEF"),
Horário: '2022-01-19 00:00'
,

_id: objectId ("63C298E9AD100B03EAD18BF0"),
Horário: '2020-03-25 00:00'

]

Exemplo 4: Usando o Operador de Datesubtract $ em MongoDB para diminuir uma data

Nos casos anteriores do MongoDB, usamos o operador $ DATADD para obter a data esperada no futuro. Agora, usamos o Operador de Datesubtract $ MongoDB, que obtém a data prevista para a data atual dada. O $ Datesubtract Operator insere todos os parâmetros da mesma forma que os parâmetros no operador $ DATADD. Observe que usamos o $ Datesubtract dentro do campo "Espera -Ordesdate" do operador $ Project Operator. Lá, o $ Datesubtract Operator insere o parâmetro "StartDate" com o campo "$ PAYEMENTATE" para a subtração da data para obter a data esperada do pedido.

Em seguida, definimos o argumento da "unidade" com o "mês" para representar o tempo que é retirado do startdate. Em seguida, é o parâmetro "quantidade" que é definido com o número "2" para diminuir a data com este valor.

dB.onLinedelivery.agregar(
[[

$ projeto:

esperado térmico:

$ datesubtract:

StartDate: "$ PAGENSTATE",
Unidade: "mês",
Valor: 2




]))

As datas esperadas são devolvidas pelo operador $ Datesubtract, que são as datas dois meses antes das datas reais.

[[

_id: objectId ("63C298E9AD100B03EAD18BEE"),
esperanteDordate: isodate ("2021-12-19T15: 20: 00.000Z ")
,

_id: objectId ("63C298E9AD100B03EAD18BEF"),
esperanteDordate: isodate ("2022-11-04T16: 10: 00.000Z ")
,

_id: objectId ("63C298E9AD100B03EAD18BF0"),
esperanteDordate: isodate ("2021-03-31T21: 00: 00.000Z ")

]

Exemplo 5: Usando o Operador de Datesubtract $ em MongoDB para classificar com base em datas relativas

Além disso, podemos estabelecer um filtro de intervalo, dependendo do tempo de execução da consulta usando a expressão $ datesubtract. Empregamos o estágio de Match $ no método agregado para corresponder às datas relativas. O estágio de Match $ tem a expressão que é definida com o operador $ EXPR. O operador $ EXPR usa os operadores $ GT e $ Datesubtract para limitar os documentos correspondentes com um PaymentDate na última semana. O Operador de Datesubtract $ fornece a data atual do formato ISO, pois a variável $$ agora é especificada para o operador StartDate. Em seguida, a data de decréscimo obtida a partir do operador $ Datesubtract é transformada no formato da string pelo "$ datetoString", que é empregado dentro do Operador de Projeto $.

dB.onLinedelivery.agregar(
[[

Match $:

$ EXPR:

$ gt:
[[
"$ PAGENDATE",

$ datesubtract:

StartDate: "$$ agora",
Unidade: "Semana",
Valor: 1


]


,

$ projeto:

_id: 0,
ID: 1,
Pagamento:

$ dateToString:

formato: "%y-%m-%d",
Data: "$ PAGENSTATE"




]
)

Temos apenas um registro que é recuperado pelo operador $ Datesubtract.

[Id: 55, pagamento: '2023-12-31']

Conclusão

Os operadores de Dateadd e $ Datesubtract MongoDB $ são demonstrados neste guia. Usamos esses operadores com exemplos em que o parâmetro associado a cada operador é explorado. Primeiro, temos um exemplo de script do operador $ DATADD para adicionar as datas com uma determinada quantidade de um número com o fuso horário. O $ DATADD Operador é implantado para obter a data futura dentro de um intervalo e obter a data esperada, especificando a hora como uma unidade. Depois disso, o Operador de Datesubtract $ é explorado com o exemplo para obter as datas anteriores.