MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да избегнем пропуските във времето, докато агрегираме OHLC в mongoDB

Можете да добавите $cond оператор за отчитане на пропуски, последван от $filter за филтриране на стойностите на празния масив.

Имате нужда от две промени.

Първата промяна за съхраняване на [] стойности за пропуски вместо масив с нулеви стойности.

Актуализирайте вътрешния израз $let до по-долу:

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

Втората промяна за филтриране на стойностите на празния масив от изхода.

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да намеря nscanned в mongoose?

  2. SQLite на Android и MongoDB със синхронизация

  3. Как да намерите заявки, които не използват индекси или са бавни в mongodb

  4. Mutex с MongoDB

  5. Активиране на компресиране на данни в MongoDB 3.0