在Dify工作流中写入MongoDB需通过REST API桥接,不可直连;须配置Atlas Data API或自建服务,设置正确权限、Headers与JSON Body,并预处理LLM输出为合法JSON,最后验证插入结果及网络白名单。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify工作流中实现MongoDB数据写入,需绕过平台原生不支持的直连驱动限制,转而通过HTTP API网关或自建REST服务桥接。直接在Http Request节点填入MongoDB Atlas连接字符串将失败,因为Dify不解析mongodb://协议且无内置驱动。
准备可调用的MongoDB REST接口
使用MongoDB Atlas自带的 Data API 或部署自建Express服务暴露POST端点。Atlas Data API需启用并配置规则:允许POST到/collection/{db}/{coll}路径,权限策略必须包含insert权限,且请求头需携带Authorization: Bearer
若用自建服务,确保接口接收JSON body并执行db.collection.insertOne(),返回标准HTTP 201响应及插入的_id字段。不要省略CORS配置,否则Dify前端调试时会触发预检失败。
测试该接口是否就绪:用curl发送样例请求,确认返回{ "insertedId": "xxx" }且状态码为201。这一步没通过,后续所有节点都会静默失败。
在Dify工作流中添加Http Request节点
进入工作流编辑画布→点击“+ 添加节点”→选择“Http Request”。该节点必须放在数据生成逻辑之后,例如在LLM输出结构化JSON后立即接入。
配置节点参数: 请求方法选 POST; URL填写你的MongoDB REST接口地址,例如https://us-east-1.aws.data.mongodb-api.com/app/data-abcde/endpoint/data/v1/action/insertOne; Headers添加两行:Content-Type → application/json,Authorization → Bearer your_api_key_here; Body使用JSON模板,引用上游变量,例如:{"dataSource":"Cluster0","database":"crm","collection":"leads","document":${llm_output}}。
注意:${llm_output}必须是合法JSON对象,不能是纯文本或带```json包裹的代码块。若LLM输出含多余换行或引号转义错误,插入会因JSON parse失败而返回400。可在前序节点加一个“Script”节点做clean_json()预处理。
验证写入结果与错误处理
方法一:启用Response Mapping功能,在Http Request节点设置Outputs映射,提取response.insertedId → 存入变量write_result_id。
方法二:添加Condition节点判断response.status === 201,成立则走成功分支,否则跳转至Error Handler节点发送告警消息。
方法三:在工作流末尾追加一个独立的GET请求节点,调用同一REST接口的find操作,传入刚获取的insertedId,确认文档真实落库。这步不可跳过——HTTP 201仅表示API网关接收成功,不保证MongoDB持久化完成。
【务必检查Atlas集群的网络访问白名单】 若使用Atlas,需将Dify部署服务器的出口IP加入IP Access List,否则请求会被直接拒绝,日志只显示connection timeout而非明确错误。


















