MongoEngine中字段类型
以下是 MongoEngine 中支持的所有字段类型的完整列表,包括常用的和特殊的字段类型:
1、基本字段类型
- StringField:用于存储字符串。
- IntField:用于存储 32 位整型。
- LongField:用于存储 64 位整型。
- FloatField:用于存储单精度浮点数。
- DecimalField:用于存储高精度的十进制数。
- BooleanField:用于存储布尔值 (True 或 False)。
- DateField:用于存储日期,不包含时间。
- TimeField:用于存储时间,不包含日期。
- DateTimeField:用于存储日期和时间,通常存储为 UTC 时间。
- BinaryField:用于存储二进制数据。
2、复杂字段类型
- ListField:用于存储同类型的列表,可以与其他字段类型结合使用。
- DictField:用于存储字典类型,可以包含任意结构的键值对。
- EmbeddedDocumentField:用于嵌入其他文档,定义复杂的嵌套结构。
- ReferenceField:用于引用其他文档,类似于外键。
3、特殊字段类型
- ObjectIdField:用于存储 ObjectId 类型,通常用于 _id 字段。
- URLField:用于存储 URL 字符串。
- EmailField:用于存储电子邮件地址。
- ImageField:用于存储图像数据。
- FileField:用于存储文件(通常与 GridFS 配合使用)。
- SequenceField:用于生成递增的序列号,通常用于主键。
- GeoPointField:用于存储地理位置(经纬度),支持地理查询。
- GeoJSONField:用于存储 GeoJSON 格式的地理空间数据。
- SortedListField:支持排序的列表字段。
- SortedDictField:支持排序的字典字段。
以下是一个包含多种字段类型的 MongoEngine 文档示例:
python
from mongoengine import Document, StringField, IntField, FloatField, DecimalField, BooleanField, DateTimeField, ListField, DictField, EmbeddedDocumentField, ReferenceField, URLField, EmailField, BinaryField, ObjectIdField
class Address(Document):
street = StringField()
city = StringField()
zip_code = StringField()
class User(Document):
username = StringField(required=True, unique=True)
age = IntField()
balance = FloatField()
account_balance = DecimalField()
is_active = BooleanField(default=True)
created_at = DateTimeField(default=datetime.datetime.utcnow)
hobbies = ListField(StringField())
preferences = DictField() # 存储用户偏好的字典
address = EmbeddedDocumentField(Address)
friends = ListField(ReferenceField('User')) # 参考同一集合中的其他文档
website = URLField()
email = EmailField()
profile_picture = BinaryField() # 存储用户头像的二进制数据