Il avgObjSize
non è in linea con la stima di 280 byte. Significa che i tuoi oggetti hanno una media di circa 5 MB e storageSize
è vicino a 1 GB. Se hai un limite di memoria, l'esecuzione di una query che deve accedere a tutti i 1 GB di file causerebbe molti errori di pagina.
Hai provato a compattare ?
db.runCommand({compact: 'Aggregates'})
o riparazione ?
db.repairDatabase()
Se ciò non funziona, prova a ritirare solo i campi necessari per la somma anziché l'intero documento. È possibile che quei documenti siano effettivamente 5 MB e il tempo venga speso per trasferire i dati via cavo.
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