Как устранить ограничение в 40 МБ для агрегатных запросов MongoDB с помощью Cosmos API - PullRequest
0 голосов
/ 17 января 2019

У меня есть две коллекции внутри БД, называемые листами, называемые балансом и доходом, которые необходимо объединить в поле с именем "_id"

Я пытаюсь выполнить агрегацию для двух умеренно больших коллекций, и я устанавливаю ограничение в 1, чтобы получить только один результат.

Однако я все еще достигаю предела в 40 МБ, когда я уверен, что один результат не достигнет 40 МБ "

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 голосов
/ 24 января 2019

Спасибо за ваш отзыв.Другие пользователи также сталкиваются с подобной проблемой.Эта проблема была передана Группе продуктов, и они активно работают над улучшением агг.fwk и post-GA уберут это ограничение.

Тем временем вы можете использовать следующие обходные пути: 1) сокращение полей, используемых в каждом документе 2) уменьшение общего количества документов, охватываемых запросом.

Ссылка на GitHub: https://github.com/MicrosoftDocs/azure-docs/issues/16997/

Пожалуйста, дайте нам знать, если у вас все еще есть какие-то проблемы.

...