如何在 python(pymongo) 中为 MongoDB Stitch 而不是 NodeJS(mongoose) 编写触发器和函数代码

How to write trigger and functions code in python(pymongo) for MongoDB Stitch instead of NodeJS(mongoose)

我想建立 MongoDB 连接与我的 Python 脚本和触发数据库事件的触发器以执行 python 函数。

我在 python 中看到了这个 article which shows connection with stitch of python script. I cannot find how to do this type of import of JavaScript

我希望如果我的数据库中删除了已知集合的 TTL 索引文档,那么 MongoDB 将触发我的 Python 脚本并在我的 [=19= 中执行一个函数] 脚本。我怎样才能做到这一点?

MongoDB Stitch Triggers listen for application events of a configured type and are each linked with a specific Stitch function. This function is Stitch hosted function, and currently MongoDB Stitch 函数只能用 JavaScript (ES6+) 来写。因此,目前无法为 Stitch 触发器编写 Python 函数。根据您要执行的操作,如果足够简单,我建议将 Python 逻辑转换为 JavaScript。

根据您的要求和用例,您还可以尝试一些解决方法:

  1. 打开 MongoDB ChangeStreams using pymongo.change_stream 以观察集合、数据库或整个集群的变化。 Stitch 触发器还利用 MongoDB ChangeStream 作为底层机制。这里的区别在于执行不是在 Stitch 服务器上,而是在您的应用程序服务器上。例如:

    pipeline = [{'$match': {'operationType': 'insert'}}]
    with db.collection.watch(pipeline) as stream:
        for insert_change in stream:
            # Trigger something based on an insert of a document 
            print(insert_change)
    
  2. 为调用您自己的应用程序 Web 服务器的触发器编写一个简单的 Stitch 函数(在 JavaScript 中)。例如,编写一个接受 REST API 端点的 Python Flask Web 服务器,即 https://your.custom.server.com/api/v1/insert?event=101 然后执行你的 Python 函数。在这里,您将 changestream watch 委托给 Stitch,但有一个服务器等待来自 Stitch 的传入调用。