我目前正在构建一个管道,每次插入新文档时都会从 MongoDB 读取数据,并在经过一些预处理后将其发送到外部数据源。预处理并将数据发送到外部数据源部分按照我的设计方式运行良好。
问题是,我无法从 MongoDB 读取数据。我正在尝试构建一个触发器,当某些 MongoDB 集合更新时,它会从 MongoDB 读取数据,然后将其发送到 python。我不考虑轮询 MongoDB,因为它太占用资源。
我找到了这个库 mongotriggers( https://github.com/drorasaf/mongotriggers/ ),现在来看看它。
总之,如何构建一个触发器,当新文档插入到特定集合时,将数据从 MongoDB 发送到 python?
如有任何评论或反馈,我们将不胜感激。
提前致谢。
最佳
哎呀
最佳答案
在 MongoDB v3.6+ 中,您现在可以使用 MongoDB Change Streams 。更改流允许应用程序访问实时数据更改,而不会产生跟踪操作日志的复杂性和风险。应用程序可以使用更改流来订阅单个集合、数据库或整个部署上的所有数据更改,并立即对它们使用react。
例如,在插入新文档时监听来自 MongoDB 的流:
try:
with db.collection.watch([{'$match': {'operationType': 'insert'}}]) as stream:
for insert_change in stream:
# Do something
print(insert_change)
except pymongo.errors.PyMongoError:
# The ChangeStream encountered an unrecoverable error or the
# resume attempt failed to recreate the cursor.
logging.error('...')
pymongo.collection.Collection.watch()从 PyMongo 3.6.0+ 开始可用。
关于python - mongodb = 触发器 => python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44064158/