sql >> Databáze >  >> NoSQL >> MongoDB

Směšně pomalý dotaz mongoDB na malou sbírku v jednoduché, ale velké databázi

avgObjSize je mimo odhad 280 bajtů. Říká se, že vaše objekty mají v průměru kolem 5 MB a storageSize je téměř 1 GB. Pokud jste s omezenou pamětí spouštění dotazu, který potřebuje přístup k celému 1GB souboru, způsobilo by to spoustu chyb stránky.

Zkoušeli jste zhutňování ?

db.runCommand({compact: 'Aggregates'})

nebo oprava ?

db.repairDatabase()

Pokud to nefunguje, zkuste stáhnout zpět pouze ta pole potřebná pro součet, nikoli celý dokument. Je možné, že tyto dokumenty mají ve skutečnosti 5 MB a čas strávený přetahováním dat po drátě.

def get_total():
    start = datetime.now()
    print sum([x['daily_total_pages'] for x in c.Aggregates.find({}, {"daily_total_pages": 1})])
    end = datetime.now()
    print (end-start).seconds



  1. Model.find() vrací v mongoose prázdnou

  2. mongodb limit ve vloženém dokumentu

  3. Jak seskupit dokumenty podle týdne v mongodb

  4. vložte pole do mongodb pomocí pymongo