1

我在 db 中有两个集合,称为表,称为资产负债表和收入,它们需要加入一个名为“_id”的字段

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

有没有办法解决这个问题的限制?

4

1 回答 1

2

感谢您的反馈意见。还有其他用户也面临着类似的问题。此问题已升级到产品组,他们正在积极努力改进 agg。fwk 和 post-GA 将删除此限制。

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

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

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

于 2019-01-24T09:52:52.687 回答