MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come evitare intervalli di tempo durante l'aggregazione di OHLC in mongoDB

Puoi aggiungere $cond operatore per tenere conto delle lacune seguite da $filter per filtrare i valori dell'array vuoti.

Sono necessarie due modifiche.

La prima modifica per memorizzare [] valori per spazi vuoti invece di array con valori nulli.

Aggiorna l'espressione interna $let al di sotto:

{
  "$let":{
    "vars":{"five":...},
    "in":{
      "$cond":[
        {"$eq":["$$five",[]]},
        "$$five",
        [{"$arrayElemAt":[{"$arrayElemAt":["$$five",-1]},0]},
         ....
        {"$arrayElemAt":[{"$arrayElemAt":["$$five",-1]},-1]}]
      ]
    }
  }
}

La seconda modifica per filtrare i valori dell'array vuoti dall'output.

{
  "$project":{
    "data":{
      "$let":{
        "vars":{"mints":...},
        "in":{"$filter":{"input":{"$map":...},as:"flr", "cond":{"$ne":["$$flr",[]]}}}
      }
    }
  }
}