sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man undviker tidsluckor medan man aggregerar OHLC i mongoDB

Du kan lägga till $cond operatör för att ta hänsyn till luckor följt av $filter för att filtrera de tomma arrayvärdena.

Du behöver två ändringar.

Den första ändringen för att lagra []-värden för luckor istället för array med nollvärden.

Uppdatera det inre $let-uttrycket till nedan:

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

Den andra ändringen för att filtrera de tomma arrayvärdena från utgången.

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



  1. MongoDB Hur frågar jag med $date-operatorn?

  2. Flera $inc-uppdateringar i MongoDB

  3. c# mongodb-drivrutin hur man kastar ett mongo-dubbelvärde till ett c#-decimalt

  4. Hur man hämtar posten från mongodb med _id-fältet och visar den hämtade posten i konsolen med java