使用 MongoEngine 的 MongoDB¶
使用像 MongoDB 这样的文档数据库是关系型 SQL 数据库的常见替代方案。 此模式展示了如何使用 MongoEngine,一个文档映射库,与 MongoDB 集成。
一个正在运行的 MongoDB 服务器和 Flask-MongoEngine 是必需的。
pip install flask-mongoengine
配置¶
基本设置可以通过在 app.config
上定义 MONGODB_SETTINGS
并创建一个 MongoEngine
实例来完成。
from flask import Flask
from flask_mongoengine import MongoEngine
app = Flask(__name__)
app.config['MONGODB_SETTINGS'] = {
"db": "myapp",
}
db = MongoEngine(app)
映射文档¶
要声明一个表示 Mongo 文档的模型,创建一个继承自 Document
的类,并声明每个字段。
import mongoengine as me
class Movie(me.Document):
title = me.StringField(required=True)
year = me.IntField()
rated = me.StringField()
director = me.StringField()
actors = me.ListField()
如果文档具有嵌套字段,使用 EmbeddedDocument
来定义嵌入文档的字段,并使用 EmbeddedDocumentField
在父文档上声明它。
class Imdb(me.EmbeddedDocument):
imdb_id = me.StringField()
rating = me.DecimalField()
votes = me.IntField()
class Movie(me.Document):
...
imdb = me.EmbeddedDocumentField(Imdb)
创建数据¶
使用字段的关键字参数实例化您的文档类。 您还可以在实例化后将值分配给字段属性。 然后调用 doc.save()
。
bttf = Movie(title="Back To The Future", year=1985)
bttf.actors = [
"Michael J. Fox",
"Christopher Lloyd"
]
bttf.imdb = Imdb(imdb_id="tt0088763", rating=8.5)
bttf.save()
查询¶
使用类 objects
属性进行查询。 关键字参数在字段上查找相等的值。
bttf = Movies.objects(title="Back To The Future").get_or_404()
查询运算符可以通过使用双下划线将它们与字段名称连接起来使用。 objects
,以及通过调用它返回的查询,是可迭代的。
some_theron_movie = Movie.objects(actors__in=["Charlize Theron"]).first()
for recents in Movie.objects(year__gte=2017):
print(recents.title)
文档¶
还有更多使用 MongoEngine 定义和查询文档的方法。 有关更多信息,请查看 官方文档。
Flask-MongoEngine 在 MongoEngine 之上添加了有用的实用程序。 也请查看他们的 文档。