我正在使用python创建一个简单的数据库CRUD管理器,并将它连接到MongoDB数据库。在使用完全相同的方法之前,我已经连接到集群并检索了帖子。然而,这一次,当我尝试,它不起作用。
当我试图从集合中打印字典对象时,会出现错误。集合只包含一个带有{title:"book"}的对象,在下面的代码中,我检索了一个pymongo.cursor对象作为变量名"thedb“。
print(thedb)会回来
<pymongo.cursor.Cursor object at 0x01175D10>它有可能返回一个空字典,但我不知道测试它是否为空。
client = pymongo.MongoClient(host,ssl=True,ssl_cert_reqs=ssl.CERT_NONE)这对结果没有任何影响。
thedb = posts.find()若要返回所有对象,则会产生相同的错误。
for a in thedb:
print(a["title"])它应该是一本字典,这样它就会返回"book“的值。
import pymongo
import mongoengine
username = "username"
password = "password"
host = "mongodb+srv://"+username+":"+password+"@nameofmycluster-bfdug.mongodb.net/test?retryWrites=true&w=majority"
client = pymongo.MongoClient(host)
db = client.pymongo_test
# "pymongo_test" is the name of my database
mongoengine.connect('mongoengine_test', host=host)
posts = db.moreposts
# "moreposts" is the name of the collection in pymongo_test
thedb = posts.find({'title':"book"})
for a in thedb:
print(a)Traceback (most recent call last):
File "C:/Users/J/Documents/Projects/Python/jobapplications/connectdb.py", line 128, in <module>
main()
File "C:/Users/J/Documents/Projects/Python/jobapplications/connectdb.py", line 102, in main
for a in thedb:
File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\cursor.py", line 1225, in next
if len(self.__data) or self._refresh():
File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\cursor.py", line 1117, in _refresh
self.__session = self.__collection.database.client._ensure_session()
File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\mongo_client.py", line 1598, in _ensure_session
return self.__start_session(True, causal_consistency=False)
File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\mongo_client.py", line 1551, in __start_session
server_session = self._get_server_session()
File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\mongo_client.py", line 1584, in _get_server_session
return self._topology.get_server_session()
File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\topology.py", line 434, in get_server_session
None)
File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\topology.py", line 200, in _select_servers_loop
self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: connection closed,connection closed,connection closed
Process finished with exit code 1发布于 2021-05-22 14:59:09
今天早上刚开始使用mongoDB,也遇到了同样的问题。我在找一个特定的值,找到了,但是得到了和你一样的结果。我刚说了"“就得到了结果。正如我所说的,我刚刚开始使用mongoDB,这就是为什么我不知道为什么。
这得到了我的结果: db.find({"key":"value"})
发布于 2019-08-04 14:01:55
我找不到解决方案,所以我试着用一个新集群创建一个新的MongoDB项目。最初的项目是使用AWS作为集群的云提供商和区域。这一次,我使用Azure作为新项目中新集群的云提供商和区域。
它现在正在工作,所以问题就在到数据库的连接中。我所做的就是建立一个新的数据库,所以实际上,原来的问题仍然存在于旧的数据库中。
发布于 2019-11-04 20:25:49
pymongo.errors.ServerSelectionTimeoutError: connection closed,connection closed,connection closed每个集群有3个副本集节点。看上去你和他们中的任何一个都没有联系。在你的阿特拉斯网络界面上,转到你的Security > Network access settings,确保你的IP地址在那里被白化了。
https://stackoverflow.com/questions/57343409
复制相似问题