MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So vermeiden Sie Zeitlücken beim Aggregieren von OHLC in MongoDB

Sie können $cond hinzufügen Operator, um Lücken zu berücksichtigen, gefolgt von $filter um die leeren Array-Werte zu filtern.

Sie benötigen zwei Änderungen.

Die erste Änderung zum Speichern von []-Werten für Lücken anstelle von Arrays mit Nullwerten.

Aktualisieren Sie den inneren $let-Ausdruck wie folgt:

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

Die zweite Änderung zum Filtern der leeren Array-Werte aus der Ausgabe.

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