sql >> Databáze >  >> NoSQL >> MongoDB

Jak se vyhnout časovým mezerám při agregaci OHLC v mongoDB

Můžete přidat $cond operátor pro zohlednění mezer následovaný $filter pro filtrování hodnot prázdného pole.

Potřebujete dvě změny.

První změna k ukládání hodnot [] pro mezery namísto pole s hodnotami null.

Aktualizujte vnitřní výraz $let na níže:

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

Druhá změna pro filtrování hodnot prázdného pole z výstupu.

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



  1. Operátoři agregace MongoDB pro díly s datem vrácení

  2. findOneAndUpdate způsobuje problém s duplikací

  3. Node vložte velká data pomocí mongoose

  4. 3 způsoby, jak vypustit index v MongoDB