如何使用Cosmos API消除MongoDB聚合查询的40MB查询限制

时间:2019-01-17 16:29:13

标签: azure-cosmosdb-mongoapi

我在数据库中有两个集合,分别称为工作表和资产负债表,分别称为工作表和收入。

我正在尝试对两个中等大小的集合进行聚合,并且将限制设置为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."

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

感谢您的反馈。还有其他用户也面临类似的问题。 此问题已上报给产品组,他们正在积极改进agg。 fwk和GA后将取消此限制。

同时,您可以使用以下解决方法: 1)减少每个文档中使用的字段 2)减少查询覆盖的文档总数。

参考GitHub线程:https://github.com/MicrosoftDocs/azure-docs/issues/16997/

如果您仍然有疑问,请告诉我们。