You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过IP地址读写现有MongoDB?PyMongo连接及操作问题

PyMongo连接MongoDB及集合操作问题解决

报错1:collection_names()方法不存在

问题原因

PyMongo 3.7+版本已移除database.collection_names()方法,改用database.list_collection_names()替代,调用旧方法会触发类型错误。

修复方法

将代码中的print(db.collection_names())替换为print(db.list_collection_names())


报错2:ServerSelectionTimeoutError(无法连接服务器)

问题原因

目标MongoDB为副本集配置,但客户端尝试解析副本集内部主机名(mongodb)失败,导致无法建立连接。需强制客户端直连指定IP节点,而非尝试发现整个副本集。

修复方法

创建MongoClient时添加directConnection=True参数,同时确保:

  • 公司防火墙允许你的Windows 11机器访问目标MongoDB的27017端口
  • 目标MongoDB实例的绑定IP包含196.xxx.xxx.xxx(而非仅绑定内部IP)

完整实现代码

1. 列出cloud_db数据库下的所有集合

import pymongo

# 连接MongoDB,添加directConnection=True强制直连指定节点
client = pymongo.MongoClient("mongodb://196.xxx.xxx.xxx:27017", directConnection=True)

# 输出所有数据库列表
print("现有数据库列表:", client.list_database_names())

# 连接cloud_db数据库
db = client.cloud_db

# 输出cloud_db下的所有集合
print("cloud_db中的集合列表:", db.list_collection_names())

2. 对eform_detail集合进行读写操作

import pymongo

client = pymongo.MongoClient("mongodb://196.xxx.xxx.xxx:27017", directConnection=True)
db = client.cloud_db
eform_col = db.eform_detail

# 写入单条数据示例
new_form = {
    "form_id": "TEST_EF_001",
    "title": "测试表单",
    "content": "表单测试内容",
    "create_time": "2024-05-20"
}
insert_result = eform_col.insert_one(new_form)
print("插入文档ID:", insert_result.inserted_id)

# 查询数据示例(按form_id过滤)
for doc in eform_col.find({"form_id": "TEST_EF_001"}):
    print(doc)

# 更新数据示例
update_result = eform_col.update_one(
    {"form_id": "TEST_EF_001"},
    {"$set": {"content": "更新后的测试内容"}}
)
print(f"成功更新{update_result.modified_count}条文档")

# 删除数据示例
delete_result = eform_col.delete_one({"form_id": "TEST_EF_001"})
print(f"成功删除{delete_result.deleted_count}条文档")

补充说明

  • 若MongoDB开启身份验证,连接字符串格式为:mongodb://用户名:密码@196.xxx.xxx.xxx:27017/?directConnection=True
  • 确保PyMongo版本为最新,可执行pip install --upgrade pymongo更新

内容的提问来源于stack exchange,提问作者j ton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:25:17