MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment éviter les intervalles de temps lors de l'agrégation d'OHLC dans mongoDB

Vous pouvez ajouter $cond opérateur pour tenir compte des écarts suivi de $filter pour filtrer les valeurs de tableau vides.

Vous avez besoin de deux modifications.

Le premier changement pour stocker les valeurs [] pour les espaces au lieu d'un tableau avec des valeurs nulles.

Mettez à jour l'expression interne $let ci-dessous :

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

Le deuxième changement pour filtrer les valeurs de tableau vides de la sortie.

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