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

Como evitar intervalos de tempo ao agregar OHLC no mongoDB


Você pode adicionar $cond operador para contabilizar as lacunas seguido por $filter para filtrar os valores do array vazio.

Você precisa de duas alterações.

A primeira alteração para armazenar valores [] para lacunas em vez de matriz com valores nulos.

Atualize a expressão interna $let para abaixo:
{
  "$let":{
    "vars":{"five":...},
    "in":{
      "$cond":[
        {"$eq":["$$five",[]]},
        "$$five",
        [{"$arrayElemAt":[{"$arrayElemAt":["$$five",-1]},0]},
         ....
        {"$arrayElemAt":[{"$arrayElemAt":["$$five",-1]},-1]}]
      ]
    }
  }
}

A segunda alteração para filtrar os valores de matriz vazios da saída.
{
  "$project":{
    "data":{
      "$let":{
        "vars":{"mints":...},
        "in":{"$filter":{"input":{"$map":...},as:"flr", "cond":{"$ne":["$$flr",[]]}}}
      }
    }
  }
}