合并 MongoDb 个客户端:pyMongo 和 MongoEngine

Combine MongoDb clients: pyMongo and MongoEngine

在我的 Web 应用程序中,我使用 Flask 作为框架,使用 MongoDB 作为持久层。有多个图书馆连接到 MongoDB。我目前正在使用低级库 pyMongo。但是,对于某些型号,我想将它与 MongoEngine 结合使用。

我看到的唯一方法是创建两个客户端的实例。这看起来是一只大狗。是否有更简单的方法来组合这些库(pyMongoMongoEngine),以便它们使用相同的数据库(具有不同的集合)。

目前无法使用现有的 Pymongo 客户端连接 MongoEngine,但您可以反其道而行之;如果连接 MongoEngine,则可以检索其底层的 pymongo 客户端或数据库实例。

from mongoengine import connect, get_db, Document, StringField

conn = connect()    # connects to the default "test" database on localhost:27017

print(conn)    # pymongo.MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary())

db = get_db()  # pymongo.Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary()), u'test')
print(db)

class Person(Document):
    name = StringField()


coll = Person._get_collection()
print(coll)    # pymongo.Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary()), u'test'), u'person')