0

我最近一直在使用 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 的方法。我在想我错过了什么。我应该将参数传递给光标吗?我应该在某处建立索引吗?

预先感谢您的帮助 !

4

0 回答 0