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()  # 存储用户头像的二进制数据
posted @ 2024-10-31 16:16  XieBuWan  阅读(6)  评论(0编辑  收藏  举报