MongoEngine 使用入门说明

2017-09-13 0 By admin

MongoEngine 是一个文档对象映射框架(就像ORM,不过是为文档性数据库);它是使用python语言对MongoDB数据库开发的。
MongoEngine is a Document-Object Mapper (think ORM, but for document databases) for working with MongoDB from Python.
使用文档:http://docs.mongoengine.org/

一、MongoEngine 基础介绍

1.1、MongoEngine 安装和连接数据库

pip install mongoengine
import mongoengine as mongo
mongo.connect('database', host='localhost', port=27017)

1.2、定义文档模式

文件模式继承于Document类;并通过添加字段对象(StringField,IntField等)作为Document类的属性添加到实例化的文档模式中。
class tableName(mongo.Document):
meta = {'collection': 'tableName'}
filedName1 = mongo.DateTimeField()
filedName2 = mongo.ListField(mongo.StringField())

1.3、动态文档模式

MongoDB的优点之一是集合collection的动态模式,有一些需要动态/扩展样式文档的场景。

二、字段类型

MongoEngine 支持的字段类型列表。

  1. BinaryField:二进制
  2. BooleanField:布尔型
  3. ComplexDateTimeField
  4. DateTimeField:日期
  5. DecimalField:整数
  6. DictField:字典
  7. DynamicField
  8. EmailField:邮件
  9. EmbeddedDocumentField
  10. EmbeddedDocumentListField
  11. FileField:文件
  12. FloatField:浮点
  13. GenericEmbeddedDocumentField
  14. GenericReferenceField
  15. GeoPointField
  16. ImageField:图片
  17. IntField:整型
  18. ListField:列表
  19. MapField
  20. ObjectIdField
  21. ReferenceField
  22. SequenceField
  23. SortedListField
  24. StringField
  25. URLField:链接
  26. UUIDField
  27. PointField
  28. LineStringField
  29. PolygonField
  30. MultiPointField
  31. MultiLineStringField
  32. MultiPolygonField

2.1、字段参数

  1. 强制性:required=True
  2. 约束性:max_length
  3. 默认值:default
  4. 唯一性:unique
  5. 主键:primary_key
  6. 可选择迭代:choices
  7. 其他:unique_with

三、其他补充介绍

3.1、嵌入文档

EmbeddedDocument

3.2、文档集合collections

文档模式中可以设置meta参数,用于设置除了字段外的其他属性;
集合名称:collection
文档最大数:max_documents
集合最大存储:max_size

3.3、索引

在meta参数中设置indexes;
$文档索引
#哈希索引
index_options (Optional)
Set any default index options - see the full options list
index_background (Optional)
Set the default value for if an index should be indexed in the background
index_cls (Optional)
A way to turn off a specific index for _cls.
index_drop_dups (Optional)
Set the default value for if an index should drop duplicates

3.4、排序

order_by()

3.5、分片key

meta = {'shard_key':('machine','timestamp')}

3.6、文档继承

类似于对象开发中的对象继承
# Stored in a collection named 'page'
class Page(Document):
title = StringField(max_length=200, required=True)
meta = {'allow_inheritance': True}
# Also stored in the collection named 'page'
class DatedPage(Page):
date = DateTimeField()

3.7、抽象类