MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongoose:Como obter as estatísticas de dados de upload dos últimos 7 dias do banco de dados?


A consulta que você está descrevendo está agrupando uma série de documentos por dia, quando esses documentos contêm data e hora UTC.

O MongoDB armazena internamente datas/horas como o número de milissegundos desde 1º de janeiro de 1970, portanto, a primeira etapa precisará calcular o início do dia para cada documento e, em seguida, agrupar por esse valor de início do dia.

Se você estiver usando o MongoDB 5.0, poderá usar o $dateTrunc operador:
{$dateTrunc:{date:"$createdAt",unit:"day",timezone:"America/New_York"}}

Para versões mais antigas, você pode calcular o objeto de data que representa o início do dia ou criar uma string contendo apenas a data.

Para a opção de string:
{$concat: [
   {$toString:{$year:{ date:"$createdAt", timezone:"America/New_York" }}},
   "-",
   {$toString:{$month:{ date:"$createdAt", timezone:"America/New_York" }}},
   "-",
   {$toString:{$dayOfMonth:{ date:"$createdAt", timezone:"America/New_York" }}},
]}

Portanto, no geral, o pipeline de agregação seria:
  • $match para selecionar documentos no prazo desejado
  • $project para calcular o início do dia para cada documento
  • $group pelo início do dia, contando o número de ocorrências
  • etapas adicionais para converter o documento no formato desejado