前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoEngine 在Python中的常用方法

MongoEngine 在Python中的常用方法

作者头像
沈宥
发布2024-07-11 10:19:45
1290
发布2024-07-11 10:19:45
举报
文章被收录于专栏:从头开始学习测试开发

MongoEngine 是一个用于 Python 的 ODM(对象文档映射)库,可以让你方便地与 MongoDB 数据库进行交互。它提供了面向对象的方式来定义模型,并对 MongoDB 的数据进行 CRUD(创建、读取、更新、删除)操作。

安装 MongoEngine

代码语言:javascript
复制
pip install mongoengine

基本使用步骤

连接到 MongoDB 数据库
代码语言:javascript
复制
from mongoengine import connect
connect('mydatabase')
定义一个文档模型

文档模型是与 MongoDB 集合对应的类。在 MongoEngine 中,定义一个文档模型通常是通过继承 Document 类来实现的。

代码语言:javascript
复制
from mongoengine import Document, StringField, IntField, DateTimeField
import datetime

class User(Document):
    name = StringField(required=True, max_length=200)
    email = StringField(required=True, unique=True)
    age = IntField(required=True)
    created_at = DateTimeField(default=datetime.datetime.utcnow)
创建和保存文档
代码语言:javascript
复制
user = User(name="John Doe", email="john@example.com", age=30)
user.save()  # 保存到数据库
查询文档
代码语言:javascript
复制
# 查找所有用户
users = User.objects()

# 根据条件查找
user = User.objects(name="John Doe").first()

# 根据主键(ID)查找
user = User.objects.with_id("60c72b2f5f4b5c6d7c8e1d0a")
更新文档
代码语言:javascript
复制
user = User.objects(name="John Doe").first()
if user:
    user.update(set__age=31)
删除文档
代码语言:javascript
复制
user = User.objects(name="John Doe").first()
if user:
    user.delete()


进阶用法

嵌入文档

MongoEngine 允许你将一个文档嵌入到另一个文档中

代码语言:javascript
复制
from mongoengine import EmbeddedDocument, EmbeddedDocumentField, ListField

class Address(EmbeddedDocument):
    street = StringField(max_length=200)
    city = StringField(max_length=100)

class User(Document):
    name = StringField(required=True, max_length=200)
    addresses = ListField(EmbeddedDocumentField(Address))

# 创建用户并添加地址
address = Address(street="123 Main St", city="New York")
user = User(name="Jane Doe", addresses=[address])
user.save()
索引和唯一性

可以在字段上设置索引和唯一性约束

代码语言:javascript
复制
class User(Document):
    name = StringField(required=True, max_length=200)
    email = StringField(required=True, unique=True)
    age = IntField(required=True)

    meta = {
        'indexes': [
            'email',  # 为 email 字段创建索引
            {'fields': ['name', 'age'], 'unique': True}  # 联合唯一索引
        ]
    }
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从头开始学习测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装 MongoEngine
  • 基本使用步骤
  • 进阶用法
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档