Я недавно использовал платформу 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 выполняет проверку при каждом вызове. Иногда это довольно маленькая коллизия с сотней изученных документов, но иногда она проверяет намного больше.
Я не мог найти способ создать индекс для устранения этой коллизии. Я думаю, что я что-то пропустил. Должен ли я передать параметры курсору? Должен ли я где-нибудь создать индекс?
Заранее спасибо за помощь!