MongoEngine 是一个使用 Python 语言操作 MongoDB 的对象文档映射(ODM)工具。它提供了一组类似于 Django ORM 的 API,可以让开发者使用 Python 代码来操作 MongoDB 数据库。
1.安装 mongoengine
pip install mongoengine
2.建立数据库连接并且创建model
from mongoengine import connect
connect(db='mydb')
可选的参数有:
- host: 数据库所在的主机地址,默认为 ‘localhost’。
- port:数据库监听的端口,默认为 27017。
- username:用于连接数据库的用户名,如果没有设置用户名和密码,可以省略。
- password:用于连接数据库的密码。
- authentication_source:验证的数据库。
- authentication_mechanism:验证的机制。
from mongoengine import Document, StringField
class User(Document):
name = StringField()
email = StringField()
meta = {
'db_alias': 'mydb1', #指定数据库
'collection': 'collection', #指定 model 对应的集合名称,默认为 model 的类名。
'ordering': ['-created_at'],#指定 QuerySet 的默认排序顺序。-是降序
'indexes': [{
'fields': ['name'], 'unique': True},] #索引配置
}
meta属性常用参数:
'db_alias': 'mydb1',#指定数据库
'collection': 'collection',#指定 model 对应的集合名称,默认为 model 的类名。
'ordering': ['-created_at'],#指定 QuerySet 的默认排序顺序。-是降序
'primary_key':'field', #指定文档字段为主键,可以是 boolean 或 Field 实例
'collection_class':calss, #可以用来指定一个自定义的集合类来代替默认的 QuerySet 类。
'default_values':{'field':'value'}, #指定文档字段为主键,可以是 boolean 或 Field 实例
'indexes': [{'field': ['name'], 'unique': True},] #索引配置
collection_class的用法
默认情况下,Mongoengine 使用 mongoengine.queryset.QuerySet 类作为 model 的集合类。
这个类包含了常用的查询操作,如查询、过滤、排序、分页等。
如果你想为某个特定 model 定义自己的集合类,你可以继承 mongoengine.queryset.QuerySet 类并实现新的方法和属性。
然后在 model 的 meta 属性中指定 collection_class 参数来使用这个类
from mongoengine import queryset
class MyQuerySet(queryset.QuerySet):
def get_adults(self):
return self.filter(age__gte=18)
class User(Document):
name = StringField()
age = IntField()
meta = {
'collection_class': MyQuerySet
}
3.增
from model import User
#根据meta的indexes属性创建索引,只需要执行一次即可
User.create_indexes()
#save新增记录
user = User(name='John Doe')
user.save()
#新增一条记录
user = {
'name': 'John', 'email': 'john@example.com'}
result = User.objects.insert_one(user)
#新增多条
users = [{
'name': 'John', 'email': 'john@example.com'},
{
'name': 'Jane', 'email': 'jane@example.com'},