我最近一直在使用 pymongo 中的 Change Stream 框架来动态更新集合。
我的管道非常简单,如下所示:
pipeline = [
{"$match":
{"$and":
[{"updateDescription.updatedFields.updated_data":
{"$exists": True}},
{"operationType": "update"}]
}
}
]
它用于以下代码:
with collection.watch(pipeline) as stream:
for insert_change in stream:
'''DO SOMETHING'''
resume_token = insert_change['_id']
此更新经常发生。
我正在监视我的数据库的 COLLSCANS,并且我意识到 watch 方法引起的游标的 getMore 每次调用时都会执行一次 collscan。有时它是一个很小的 collscan,包含一百个 docsExamined,但有时它检查的次数更多。
我找不到建立索引以消除此 collscan 的方法。我在想我错过了什么。我应该将参数传递给光标吗?我应该在某处建立索引吗?
预先感谢您的帮助 !