我在使用pymongo进行mongodb聚合时遇到了aggregation result exceeds maximum document size (16MB)
个错误.
一开始我用limit()
选项就克服了这个问题.然而,在某个时刻,我得到了
Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in." error.
好的,我用{'allowDiskUse':True}
选项.当我在命令行上使用它时,这个选项可以工作,但是当我试图在python代码中使用它时
result = work1.aggregate(pipe, 'allowDiskUse:true')
我有TypeError: aggregate() takes exactly 2 arguments (3 given)
个错误.(这与http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.aggregate的定义不同:聚合(管道,**kwargs)).
我试着使用runCommand,或者更确切地说,它是pymongo的类似功能:
db.command('aggregate','work1',pipe, {'allowDiskUse':True})
但现在我又回到了"聚合结果超过了最大文档大小(16MB)"错误
万一你需要知道
pipe = [{'$project': {'_id': 0, 'summary.trigrams': 1}}, {'$unwind': '$summary'}, {'$unwind': '$summary.trigrams'}, {'$group': {'count': {'$sum': 1}, '_id': '$summary.trigrams'}}, {'$sort': {'count': -1}}, {'$limit': 10000}]
非常感谢.