我最近一直在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的方法。我以为我错过了什么。我应该将参数传递给游标吗?我应该在某个地方建立索引吗?
谢谢您的帮助!