MongoDB поток изменений приводит к COLLSCAN с getMore - PullRequest
0 голосов
/ 02 марта 2020

Я недавно использовал платформу Change Stream в pymon go для динамического обновления коллекции.

Мой конвейер довольно прост и выглядит следующим образом:

pipeline = [
            {"$match":
                {"$and":
                 [{"updateDescription.updatedFields.updated_data":
                  {"$exists": True}},
                  {"operationType": "update"}]
                 }
             }
        ]

It используется в следующем коде:

with collection.watch(pipeline) as stream:
    for insert_change in stream:
        '''DO SOMETHING'''
        resume_token = insert_change['_id']

Это обновление происходит довольно часто.

Я наблюдаю за COLLSCANS моего БД, и я понял, что getMore курсора вызван метод watch выполняет проверку при каждом вызове. Иногда это довольно маленькая коллизия с сотней изученных документов, но иногда она проверяет намного больше.

Я не мог найти способ создать индекс для устранения этой коллизии. Я думаю, что я что-то пропустил. Должен ли я передать параметры курсору? Должен ли я где-нибудь создать индекс?

Заранее спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...