我正在尝试使用pymongo 3.6.1
收听对集合的更新。
使用如下所示的文档更新集合:
{"End_Word":"bit","Success":true,"Score":1,"Term_Index":5}
如果密钥Success
在任何文档中更新为true
,则def dosomething()
会被调用。
mongodb api文档显示了此示例,作为第一步:
with db.collection.watch() as stream:
for change in stream:
print(change)
在尝试复制时,我收到OperationFailure: Unrecognized pipeline stage name: '$changeStream'
错误。在研究具有类似issues on stack的其他人时,答案是connection driver
版本。我不认为这是这种情况:
代码:
db_name = 'mapstore'
coll_name = 'oxygen'
MONGO_DB_DRIVER = pymongo atlas M2 instance driver
conn = pymongo.MongoClient(MONGO_DB_DRIVER)
db = conn[db_name]
print(db.collection_names())
我也在这些地方看了
How to listen for changes to a MongoDB collection? https://docs.mongodb.com/master/changeStreams/
什么是正确的方法?
答案 0 :(得分:1)
以下错误
OperationFailure: Unrecognized pipeline stage name: '$changeStream'
表示您的Mongodb服务器低于3.6.0
,这就是它无法识别此命令的原因。即使您有最新的客户端,也不会改变服务器的行为方式