在 pymongo Mongodb 中查找值时出错
Posted
技术标签:
【中文标题】在 pymongo Mongodb 中查找值时出错【英文标题】:Error when finding value in pymongo Mongodb 【发布时间】:2021-12-14 21:16:11 【问题描述】:代码
client = pymongo.MongoClient("mongodb+srv://username:password@cluster0.zcui8.mongodb.net/db?retryWrites=true&w=majority&ssl=true&ssl_cert_reqs=CERT_NONE")
db = client["db"]
#this gives the error
res = list(db.listings.find().limit(15).sort([('$natural',-1)]))
错误:
pymongo.errors.ServerSelectionTimeoutError: No replica set members found yet
我在分配变量res
的行中收到此错误。
在我的机器上运行它时我没有得到这个错误,但是当我在服务器上运行它时我得到了错误。
【问题讨论】:
您是否将应用服务器的新 IP 地址添加到 Atlas 上的允许列表中? 不,我添加了0.0.0.0
,所以每个人都应该能够连接。
【参考方案1】:
我尝试了这些答案中的所有解决方案,但唯一有效的就是
使用flask_pymongo
模块而不是pymongo
。现在我没有收到任何错误。
【讨论】:
【参考方案2】:这种类型的错误通常是:
未使用最新的pymongo
驱动程序
(https://pypi.org/project/pymongo/列出当前最新版本)
没有安装 dnspython
模块(我有问题 2.1.0 所以
会推荐 2.0.0)
【讨论】:
我有 dnspython,如何在 Cpanel 上将 pymongo 更新到最新版本? 不知道没用过。 如果你可以访问命令行,你可以运行:“python pip install pymongo”或“sudo python pip install pymongo” 我更新了 pymongo 并确保 dnspython 是 2.0.0 版本,但仍然出现此错误:pymongo.errors.ServerSelectionTimeoutError: No replica set members found yet, Timeout: 30s, Topology Description: <TopologyDescription id: 617d23fae48c883eebfe53be, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('cluster0-shard-00-00.zuia8.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('cluster0-shard-00-01.zuia8.mongodb.net', 27017) server_type: Unkn
以上是关于在 pymongo Mongodb 中查找值时出错的主要内容,如果未能解决你的问题,请参考以下文章
基于日期范围查找文档在 mongodb shell 中有效,但不适用于 pymongo