Występuje błąd aggregation result exceeds maximum document size (16MB)
z agregacją mongodb za pomocą pymongo.Nie można uzyskać allowDiskUse: True do pracy z pymongo
Udało mi się go pokonać na początku przy użyciu opcji limit()
. Jednak w pewnym momencie Dostałem
Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in." error.
Ok, będę korzystać z opcji {'allowDiskUse':True}
. Opcja ta działa, gdy używam go w linii poleceń, ale kiedy próbowałem używać w moim kodu Pythona
result = work1.aggregate(pipe, 'allowDiskUse:true')
uzyskać TypeError: aggregate() takes exactly 2 arguments (3 given)
błąd. (to pomimo definicji podanej pod http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.aggregate: agregacja (potok, ** kwargs)).
Próbowałem użyć RunCommand, czy raczej to pymongo równoważne:
db.command('aggregate','work1',pipe, {'allowDiskUse':True})
ale teraz jestem z powrotem do „wyniku agregacji przekracza maksymalny rozmiar dokumentu (16MB)” Błąd
W przypadku trzeba wiedzieć
pipe = [{'$project': {'_id': 0, 'summary.trigrams': 1}}, {'$unwind': '$summary'}, {'$unwind': '$summary.trigrams'}, {'$group': {'count': {'$sum': 1}, '_id': '$summary.trigrams'}}, {'$sort': {'count': -1}}, {'$limit': 10000}]
Dziękuję
>> work1.aggregate (pipe, allowDiskUse = True). Zrobiło to triumf, idealnie, dziękuję –
@Max Noel Po dodaniu 'allowDiskUse = True' nie widzę już problemu z limitem limitu rozmiaru 16mb, jednak dostałem inny błąd rozmiaru ze strony pymongo:' raise DocumentTooLarge ("zbyt duży dokument polecenia") pymongo.errors.DocumentTooLarge: zbyt duży dokument polecenia "Czy doświadczyłeś tego? – Sam