我在数据库中有两个集合,分别称为工作表和资产负债表,分别称为工作表和收入。
我正在尝试对两个中等大小的集合进行聚合,并且将限制设置为1,以便仅获得一个结果。
但是,当我确定结果不会达到40MB时,我仍然会达到40MB的上限”
uri = "connection string"
client = pymongo.MongoClient(uri)
db = client.sheets
pipeline = [{'$lookup':
{'from' : 'balancesheet',
'localField' : '_id',
'foreignField' : '_id',
'as' : 'company'}},
{'$limit': 1},
]
for doc in (db.income.aggregate(pipeline)):
pprint (doc)
运行以下代码将使我明白此错误:
"OperationFailure: Query exceeded the maximum allowed memory usage of 40 MB. Please consider adding more filters to reduce the query response size."
有没有办法解决这个问题?
答案 0 :(得分:1)
感谢您的反馈。还有其他用户也面临类似的问题。 此问题已上报给产品组,他们正在积极改进agg。 fwk和GA后将取消此限制。
同时,您可以使用以下解决方法: 1)减少每个文档中使用的字段 2)减少查询覆盖的文档总数。
参考GitHub线程:https://github.com/MicrosoftDocs/azure-docs/issues/16997/
如果您仍然有疑问,请告诉我们。