sql >> Database >  >> NoSQL >> MongoDB

Hoe u tijdsverschillen kunt vermijden tijdens het aggregeren van OHLC in mongoDB

U kunt $cond . toevoegen operator om rekening te houden met hiaten gevolgd door $filter om de lege arraywaarden te filteren.

U heeft twee wijzigingen nodig.

De eerste wijziging om [] waarden voor hiaten op te slaan in plaats van array met null-waarden.

Update de innerlijke $let-expressie naar hieronder:

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

De tweede wijziging om de lege arraywaarden uit de uitvoer te filteren.

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



  1. Hoe ReadConcernMajority inschakelen in MongoDB 3.6.3?

  2. MongoDB-query met een 'of'-voorwaarde

  3. Alleen overeenkomend subdocument van mongodb selecteren met python

  4. Een zeer grote recordset importeren in MongoDB met nodejs