MongoDB $ DateTrenc

MongoDB $ DateTrenc

O MongoDB fornece ao operador agregado $ DateTrenc para truncar os dados de acordo com a data fornecida. O operador $ DateTrenc leva apenas o valor de data único para truncá -lo no formato ISO. O argumento da “data” do $ DateTrenc usa os valores da data junto com a unidade de tempo. O operador $ DateTrenc deve exigir que essas entradas truquem a data. Além disso, também podemos usar argumentos opcionais como fuso horário, binsize e startofweek para diminuir o limite da data dentro de um intervalo de tempo. O operador $ DateTrenc divide o tempo em intervalos de tempo em binsize na unidade de tempo escolhida para cálculo.

Como usar o operador $ DateTrenc em MongoDB?

O operador $ DateTrenc é usado em MongoDB para truncar a data fornecida. Aqui, estamos trabalhando com a coleção "Flores" cujos documentos são usados ​​pelo operador $ DateTrenc para a demonstração. Para isso, temos que anexar os documentos dentro da coleção "Flores" empregando o método InsertMany (). A saída depois de executar o comando de inserção de documentos mostra que os documentos agora estão armazenados dentro da coleção "Flowers".

dB.Flores.InsertMany ([
_id: 0, tipo: "Rose", Ordem: New Date ("2023-03-23T15: 06: 20Z"), Qty: 100,
_id: 1, Tipo: "Lilly", Ordem: New Date ("2021-07-19T12: 11: 10z"), Qty: 150,
_id: 2, Tipo: "Tulip", Ordem: New Date ("2022-12-12T16: 14: 30Z"), Qty: 99,
_id: 3, tipo: "Whiterose", Ordem: New Date ("2023-08-13T05: 10: 20Z"), Qty: 500,
_id: 4, tipo: "lavanda", ordem: nova data ("2020-01-01T19: 30: 10Z"), Qty: 200,
_id: 5, Tipo: "Girassol", Ordem: New Date ("2021-03-19T12: 12: 12z"), Qty: 50
]))

Observe que existe um campo dentro do documento que é definido com os valores da data. Vamos truncar essas datas usando o operador $ DATETRUNC do MongoDB.

WRITECONCERRERRORS: [],
inserdids: [
index: 0, _id: 0,
Index: 1, _id: 1,
index: 2, _id: 2,
index: 3, _id: 3,
index: 4, _id: 4,
Index: 5, _id: 5
],
Ninserted: 5,
NupSerted: 0,
nMatched: 0,
nmodificado: 0,
nremoved: 0,
Upserted: []

Exemplo # 1: Usando o operador $ DateTrenc para truncar a data em MongoDB

Aqui, vamos implantar o operador $ DateTrenc, que simplesmente recupera a data truncada da data especificada. Demos uma consulta no shell do MongoDB, onde um método agregado é empregado para realizar os outros operadores. Chamamos o método $ projeto para incluir os campos "_id" e "_order" do documento correspondente. Em seguida, definimos outro campo "truncatedResult", que exibiu os resultados do operador $ DateTrenc. Definimos o operador $ DateTrenc, que é passado com o parâmetro "Data" e especificado com o campo "$ pedido" com valores de data. O parâmetro $ data do operador $ DateTrenc truncou a data com o UTC. Em seguida, passamos o parâmetro "Unidade", onde o tempo é expresso como uma string "dia". O valor do "dia" indica que o isodado para o início do dia, que é retornado por $ DateTrenc na data.

dB.Flores.agregado ([

$ projeto:
_id: 1,
Ordem: 1,
TruncadoDate:
$ DateTrenc:
Data: "$ pedido", unidade: "dia"




]))

A saída do operador $ DateTrenc acima mostrou as datas truncadas de todo o campo de documentos "Ordem" no campo truncado.

[[

_id: 0,
Ordem: Isodato ("2023-03-23T15: 06: 20.000Z "),
TruncadoDate: Isodate ("2023-03-23T00: 00: 00.000Z ")
,

_id: 1,
Ordem: Isodato ("2021-07-19T12: 11: 10.000Z "),
TruncadoDate: Isodate ("2021-07-19T00: 00: 00.000Z ")
,

_id: 2,
Ordem: Isodato ("2022-12-12T16: 14: 30.000Z "),
TruncadoDate: Isodate ("2022-12-12T00: 00: 00.000Z ")
,

_id: 3,
Ordem: Isodato ("2023-08-13T05: 10: 20.000Z "),
TruncadoDate: Isodate ("2023-08-13T00: 00: 00.000Z ")
,

_id: 4,
Ordem: Isodato ("2020-01-01T19: 30: 10.000Z "),
TruncadoDate: Isodate ("2020-01-01T00: 00: 00.000Z ")
,

_id: 5,
Ordem: Isodato ("2021-03-19T12: 12: 12.000Z "),
TruncadoDate: Isodate ("2021-03-19T00: 00: 00.000Z ")

]

Exemplo # 2: Usando o operador $ DateTrenc com o argumento Binsize para truncar a data em MongoDBB

O argumento binsize opcional do operador $ DateTrenc é um valor de tempo que é expresso como uma expressão numérica. A expressão numérica deve ser um número inteiro diferente de zero positivo. Quando o argumento do binsize e da unidade são usados ​​juntos, eles definem o período para a avaliação do operador $ DateTrenc. Tomamos o documento cujo campo “tipo” valor “Whiterose”, que é correspondido pelo estágio $ da partida aqui.

Depois disso, o operador $ DateTrunc no operador do projeto $ foi definido para truncar a data usando as entradas fornecidas. O $ DATETRUNC primeiro leva a entrada "Data" em que o campo "$ order" é fornecido, pois contém os valores da data. Em seguida, definimos a entrada de "unidade" com o tempo "hora" e a entrada "binsize" com o valor numérico "2".

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

$ projeto:
_id: 1,
Ordem: 1,
TruncadoResult:
$ DateTrenc:
Data: "$ pedido", unidade: "hora", binsize: 2




]))

O tempo de "unidade" é "hora" e o "Binsize" tem um valor de "2". Portanto, a hora entre a data truncada retorna do operador $ DateTrenc e a data do pedido é de duas horas.

[[

_id: 3,
Ordem: Isodato ("2023-08-13T05: 10: 20.000Z "),
TruncadoResult: Isodate ("2023-08-13T04: 00: 00.000Z ")

]

Exemplo # 3: Usando o operador $ DateTrenc com o argumento do StartOfWeek para truncar a data em MongoDBB

Temos outro argumento de opção "StartOfWeek" do operador $ DateTrenc, que especifica o início da semana. O argumento "startofweek" é realizado apenas quando a "unidade" é a semana. Aqui, adquirimos esses documentos do operador de Match $ que o operador $ NIN não selecionou na expressão. Em seguida, implantamos o operador $ DATETRUNC no campo de estágio $ "truncdate". Os argumentos são passados ​​dentro do operador $ DateTrenc para reduzir a data. O argumento opcional "StartOfWeek" também está definido dentro do operador $ DateTrenc com a semana "Quarta -feira". O operador $ DateTrenc trunca o campo "Ordem" para um período de tempo "1" Binsize e Unit "Week" na UTC Timebone com quarta -feira como o StartOfWeek.

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

$ projeto:
_id: 1,
Ordem: 1,
truncdate:
$ DateTrenc:
Data: "$ pedido", unidade: "semana", binsize: 1,
Filho horário: "UTC", StartOfWeek: "Quarta -feira"




]))

Os resultados do operador $ DateTrenc são gerados com as datas truncadas em um dia "startOfweek", bem como os valores de data real.

[[

_id: 0,
Ordem: Isodato ("2023-03-23T15: 06: 20.000Z "),
truncdate: isodate ("2023-03-22T00: 00: 00.000Z ")
,

_id: 2,
Ordem: Isodato ("2022-12-12T16: 14: 30.000Z "),
truncdate: isodate ("2022-12-07T00: 00: 00.000Z ")
,

_id: 4,
Ordem: Isodato ("2020-01-01T19: 30: 10.000Z "),
truncdate: isodate ("2020-01-01T00: 00: 00.000Z ")

]

Exemplo # 4: Usando o operador $ DateTrenc para retornar NULL em MongoDB

O operador $ DateTrenc também retorna o valor nulo em um caso quando o "startofweek" entra o campo que está vazio ou atribuído a nulo e quando o argumento da unidade tem o valor definido como "semana" e o startofweek não é especificado ou tem um nulo valor. Vamos considerar esta afirmação com o exemplo de script de MongoDB. Temos uma nova inclusão do campo “TruncadoTutput” na fase $ do projeto, onde realizamos o operador $ DateTrenc. O operador $ DateTrenc leva a entrada de "data" com o campo "Order", a unidade como uma semana, e binsize "2" de um fuso horário "America/Los_angeles". Observe que não passamos o operador $ DateTrenc com o argumento "startofweek", pois a semana é atribuída ao parâmetro "unidade".

dB.Flores.agregado ([

$ projeto:
_id: 1,
Ordem: 1,
Truncadotutput:
$ DateTrenc:
Data: "$ orderdate", unidade: "semana", binsize: 2,
fuso horário: "America/Los_angeles"




]))

Lá, obtivemos o resultado nulo no campo "TruncadoTutput" porque não inserimos o argumento "startOfWeek" no operador $ DateTrenc, mesmo que a unidade seja uma semana.

[[

_id: 0,
Ordem: Isodato ("2023-03-23T15: 06: 20.000Z "),
Truncadotutput: nulo
,

_id: 1,
Ordem: Isodato ("2021-07-19T12: 11: 10.000Z "),
Truncadotutput: nulo
,

_id: 2,
Ordem: Isodato ("2022-12-12T16: 14: 30.000Z "),
Truncadotutput: nulo
,

_id: 3,
Ordem: Isodato ("2023-08-13T05: 10: 20.000Z "),
Truncadotutput: nulo
,

_id: 4,
Ordem: Isodato ("2020-01-01T19: 30: 10.000Z "),
Truncadotutput: nulo
,

_id: 5,
Ordem: Isodato ("2021-03-19T12: 12: 12.000Z "),
Truncadotutput: nulo

]

Exemplo # 5: Usando o operador $ DateTrenc para truncar a data dentro do operador de grupo $ em MongoDB

Utilizamos o operador $ DATETRUNC na fase $ grupo do MongoDB, que trunca a data da chave do grupo e obtém os resultados da soma do campo especificado. Implantamos o estágio de $ Group e fornecemos uma chave de grupo "_id", onde o novo campo "truncdate" é estabelecido para executar a operação $ DateTrenc. Para o operador $ DateTrenc, inserimos a "data" como um campo "Ordem" com o horário de unidade e binsize do "mês" de "5". Depois disso, definimos outro campo "Addquantity", onde o operador $ SUM é atribuído com o campo $ Qty para a operação de adição.

dB.Flores.agregado ([

$ grupo:
_eu ia:
DateTrenc:
$ DateTrenc:
Data: "$ pedido", unidade: "mês", binsize: 5


,
AddQuantity: $ sum: "$ Qty"


]))

A data do campo "Ordem" é truncada a cinco meses usando o operador $ DateTrenc em uma fase de grupo $ e o total dos valores de quantidade também é retornado na saída.

[[

_id: DateTrenc: isodate ("2020-01-01T00: 00: 00.000Z "),
AddQuantity: 200
,

_id: DateTrenc: isodate ("2020-11-01T00: 00: 00.000Z "),
AddQuantity: 50
,

_id: DateTrenc: isodate ("2022-12-01T00: 00: 00.000Z "),
AddQuantity: 199
,

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

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

]

Conclusão

Cobrimos um operador MongoDB $ DATETRUNC que funciona com a data para truncá -los. Exploramos diferentes argumentos do operador $ DateTrenc com exemplos. O operador $ DateTrenc lida apenas com os documentos de campo da data na coleta de MongoDB. O operador $ DateTrenc é usado aqui com o argumento "Binsize" e o argumento "startofweek" que são opcionais, mas desempenham um papel importante enquanto truncando as datas em MongoDB.