在 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

Pymongo - 在 mongodb 副本集中查找主/主节点名称

mongodb, pymongo 查询

MongoDB Pymongo 问题

MongoDB和Python交互(pymongo)

在嵌套列表中查找最小值时出错