MongoDB更改流使用getMore导致COLLSCAN

问题描述 投票:0回答:1

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

谢谢您的帮助!

python mongodb pymongo changestream
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.