Sto correndo l'errore aggregation result exceeds maximum document size (16MB)
con l'aggregazione mongodb utilizzando pymongo.Impossibile ottenere allowDiskUse: True per funzionare con pymongo
Sono stato in grado di superarlo inizialmente utilizzando l'opzione limit()
. Tuttavia, ad un certo punto ho avuto la
Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in." error.
Ok, userò l'opzione {'allowDiskUse':True}
. Questa opzione funziona quando lo uso sulla riga di comando, ma quando ho provato ad usare nel mio codice python
result = work1.aggregate(pipe, 'allowDiskUse:true')
ottengo TypeError: aggregate() takes exactly 2 arguments (3 given)
errore. (nonostante la definizione data a http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.aggregate: aggregato (pipeline, ** kwargs)).
Ho cercato di usare EseguiComando, o piuttosto è pymongo equivalenti:
db.command('aggregate','work1',pipe, {'allowDiskUse':True})
ma ora sono tornato al 'risultato dell'aggregazione superi dimensione massima del documento (16 MB)' errore
Nel caso in cui bisogno di sapere
pipe = [{'$project': {'_id': 0, 'summary.trigrams': 1}}, {'$unwind': '$summary'}, {'$unwind': '$summary.trigrams'}, {'$group': {'count': {'$sum': 1}, '_id': '$summary.trigrams'}}, {'$sort': {'count': -1}}, {'$limit': 10000}]
Grazie
>> work1.aggregate (pipe, allowDiskUse = True). Questo ha fatto il trucco, perfetto, grazie –
@Max Noel Dopo aver aggiunto 'allowDiskUse = True', non vedo più il problema del limite di 16mb con la dimensione di bson, tuttavia ho ottenuto un errore di dimensione dal lato di pymongo:' raise DocumentTooLarge ("documento di comando troppo grande") pymongo.errors.DocumentTooLarge: documento di comando troppo grande' Hai provato questo? – Sam