使用 mongoengine 连接到 MongoDB atlas 集群

Connect to MongoDB atlas cluster with mongoengine

我有一个 Flask 应用程序,我使用 mongoengine 为其创建了数据库。但是现在,我需要连接 MongoDB Atlas 的集群,但我只能找到如何使用 Pymongo 连接:

client = pymongo.MongoClient("mongodb+srv://<username>:<password>@<database-name>.mongodb.net/test?retryWrites=true&w=majority")
db = client.test

我只是需要一些帮助来连接这个新数据库。

如果您使用的是 flask-mongoengine,您可以使用以下模式连接给定的 URI:

from flask import Flask
from flask.ext.mongoengine import MongoEngine

app = Flask(__name__)

# This would usually come from your config file
DB_URI = "mongodb+srv://<username>:<password>@<database-name>.mongodb.net/test?retryWrites=true&w=majority"

app.config["MONGODB_HOST"] = DB_URI

db = MongoEngine(app)

if __name__ == '__main__':
    app.run()

如果您使用普通 mongoengine,您可以像这样简单地建立连接:

from mongoengine import connect

DB_URI = "mongodb+srv://<username>:<password>@<database-name>.mongodb.net/test?retryWrites=true&w=majority"

connect(host=DB_URI)

这实际上是 flask-mongoengine

在幕后调用的内容

我认为您放置 URI 的方式在 <database_name> 的位置上是错误的,您应该改为放置集群的名称,例如:

app.config['MONG_DBNAME'] = '<DB_name>'
app.config['MONGO_URI'] = 'mongodb+srv://<name>:<password>@<cluster_name>.net/<DB_name>?retryWrites=true'

当使用 mongoengine 连接到 MongoDB Atlas 集群时 不管 使用 flask-mongoengine 你可以使用以下函数:

# Connect to, return database
def db_connect(database):
    db_uri = "mongodb+srv://<username>:<password>@<cluster>.net/?retryWrites=true&w=majority"
    db = connect(database, host=db_uri)
    return db

其中数据库变量是带有数据库名称的字符串。