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

Грешка при препълване на паметта при използване на обобщени и $group заявки

Някои идеи:

Не се нуждаете от първия $project етап в заявката. И можете да включите { "$toDate": "$originaltimestamp" } в рамките на $group _id на етапа , както по-долу:

"_id": { 
    "$dateToString": { 
        "format": "%Y-%m-%d", "date": { "$toDate": "$originaltimestamp" } 
    } 
}

Относно $push: "$$ROOT" - вместо $$ROOT , заснемете само полетата, от които се нуждаете най-много (или важни). Това е за намаляване на използването на паметта. Например:

"data": { 
    $push: { 
        "subscriber_id": "$subscriber_id",
        "type": "$type",
        // other required fields...
    } 
}

И накрая, можете да помислите за ограничаване на заявката за набор от дати в даден момент. Това ще изисква стартиране на заявката повече от веднъж за различен диапазон от дати - но мисля, че като цяло може да се справи по-добре. Например месец по месец, съответстващ на month поле. И този month могат да бъдат индексирани за ефективност. Това ще изисква да включите $match етап в началото (първия етап) на заявката, например:

{ $match: { month: "202001" } }

И това ще направи заявка за данни за месец януари 2020 г.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Указване на опции на курсора при връщане на поток в Spring Data MongoDB?

  2. MongoDB не може да анализира заявка (2dsphere):две условия

  3. Как да използвам изхвърлените данни от mongodump?

  4. Дизайн на схема на MongoDB - Чат в реално време

  5. MongoDB $lookup pipeline match by _id не работи