Docs 菜单
Docs 主页
/ / /
Django MongoDB后端

Django 和MongoDB功能兼容性

在此页面上,您可以找到有关 Django MongoDB后端支持和不支持的功能的信息。您还可以找到当前计划用于正式发布 (GA) 和发布后版本的功能。我们将根据用户需求对这些即将推出的功能进行优先级排序,您可以通过 创建 JIRA 问题 请求对某项功能的支持。

本节将说明 Django MongoDB后端是否支持各种MongoDB功能,以及我们计划在 GA发布中支持哪些功能。

重要

计划的 GA 支持列中带有复选标记 () 的不支持的MongoDB功能计划在稍后的 2025 正式发布中提供。但是,不保证一定会支持。

MongoDB功能
当前支持
计划内的 GA 支持

Atlas Search和Atlas Vector Search索引

复合索引

嵌入式文档索引

地理空间索引

支持。您无法使用 Django Indexes API创建这些索引,但可以通过公开 MongoClient来使用PyMongo驱动程序。

多键索引

部分索引

单字段索引

Unique indexes

在创建模型后更新 EmbeddedModelFields 索引

不支持

EmbeddedModelArrayField 索引

不支持

Django MongoDB后端当前支持下表中未包含的所有MongoDB数据类型。要查看支持类型的完整列表,请参阅创建模型指南的MongoDB BSON字段部分。

BSON 数据类型
当前支持
计划内的 GA 支持

Array

部分支持。您可以使用ArrayField 字段类型,但不支持ArrayField 多态性。

Object

部分支持。您可以使用 EmbeddedModelField字段类型,但有以下限制:

  • EmbeddedModel 模式更改在创建后不会注册。

  • 嵌入式文档不能使用 Django 外键。

  • 不支持任意或无类型的嵌入式模型字段。您必须从 EmbeddedModel 类派生所有字段。

计划提供部分支持。我们计划添加对在创建后注册 EmbeddedModel模式更改的支持。

Regular Expression

不支持

支持。不过,我们计划在正式发布后的版本中支持这种类型。

MongoDB功能
当前支持
计划内的 GA 支持

聚合操作

部分支持。Django MongoDB后端不包括MongoDB聚合框架的自定义 Django字段查找,但您可以使用 raw_aggregate() 方法。

未计划提供全面支持。不过,我们计划在 GA 后发布中添加对MongoDB聚合操作符的支持。

Atlas Search 查询

部分支持。您不能使用 Django QuerySet API运行Atlas Search查询,但可以使用raw_aggregate() 方法。

删除操作

地理空间查询

部分支持。您不能使用 Django QuerySetGeoDjango API运行地理空间查询,但可以使用 raw_aggregate() 方法。

插入操作

读取操作

更新操作

向量搜索查询

部分支持。您不能使用 Django QuerySet API运行向量搜索查询,但可以使用 raw_aggregate() 方法。

MongoDB功能
当前支持
计划内的 GA 支持

异步支持

身份验证

缓存数据存储

✓ 使用 django_mongodb_backend.cache.MongoDBCache后端,而不是 Django 的内置数据库缓存后端django.core.cache.backends.db.DatabaseCache

Change Streams

不支持

支持。不过,我们计划在正式发布后的版本中添加对此功能的支持。

客户端字段级加密和Queryable Encryption

不支持

集合交互

数据库交互

GridFS

不支持

支持。不过,我们计划在正式发布后的版本中添加对此功能的支持。

一个集合有多个模型

不支持

表示文档

✓ 使用模型表示MongoDB文档。

模式验证

不支持

支持。不过,我们计划在正式发布后的版本中添加对此功能的支持。

时间序列数据

事务

不支持

本节将说明 Django MongoDB后端是否支持各种 Django 功能,以及我们计划在 GA发布中支持哪些功能。

重要

General Availability Support(正式可用性支持)列中带有复选标记 () 的不支持的 Django 功能计划在稍后的 2025 GA发布中提供。但是,不保证一定会支持。

Django MongoDB后端当前支持下表中未包含的所有 Django字段类型。要查看支持字段的完整列表,请参阅“创建模型”指南的Django 字段部分。

Django 字段类型
当前支持
计划内的 GA 支持

AutoField

支持。也不支持 BigAutoFieldSmallAutoField 类型。请改用 ObjectIdField

不支持

CompositePrimaryKey

不支持

不支持

DateTimeField

部分支持。您可以使用此字段类型,但有以下限制:

  • 不支持 DateTimeField 值的微秒粒度。

未计划提供全面支持

DurationField

部分支持。您可以使用此字段类型,但有以下限制:

  • DurationField 存储毫秒而不是微秒

未计划提供全面支持

ForeignKey

部分支持。您可以使用此字段类型,但有以下限制:

  • 如果可能,应使用 EmbeddedModelField 而不是 ForeignKey字段,以避免使用 $lookup 操作。EmbeddedModelField 模拟MongoDB嵌入式文档,其性能优于 ForeignKey字段。要学习;了解有关如何减少 $lookup 操作的更多信息,请参阅Atlas文档中的 减少 $lookup 操作指南。

  • CASCADE 在 字段上删除ForeignKey 的性能不如使用EmbeddedModelField 的性能。

未计划提供全面支持

GeneratedField

不支持

不支持

JSONField

部分支持。您可以使用此字段类型,但有以下限制:

  • Django MongoDB后端无法区分JSON和SQL null 值。 使用 Value(None, JSONField())isnull 查找的查询会同时返回JSON和SQL null 值。

  • 某些使用 Q 对象的查询(例如 Q(value__foo="bar"))可能无法按预期运行。

  • 筛选 None 值会错误地返回其中不存在字段的对象。

未计划提供全面支持。不过,我们计划在 GA 后发布中解决Q对象和 None 键筛选限制。

Django MongoDB后端目前支持下表中未包含的所有 Django QuerySet 方法。要查看支持的方法,请参阅 Django 文档中的QuerySet API

Django QuerySet 功能
当前支持
计划内的 GA 支持

delete()

部分支持。不能使用此方法执行跨多个集合的查询。

未计划提供全面支持

extra()

不支持

不支持

prefetch_related()

不支持

不支持

raw()

支持。但是,您可以使用 raw_aggregate() 方法来运行使用 MongoDB聚合管道语法的查询。

未计划提供全面支持

update()

部分支持。不能使用此方法执行跨多个集合的查询。

未计划提供全面支持

Django MongoDB后端当前支持下表中未包含的所有数据库函数。要查看函数的完整列表,请参阅 Django 文档中的数据库函数。

Django 函数
当前支持
计划内的 GA 支持

Chr

不支持

不支持

ExtractQuarter

不支持

不支持

MD5

不支持

不支持

Now

不支持

不支持

Ord

不支持

不支持

Pad

不支持

不支持

Repeat

不支持

不支持

Reverse

不支持

不支持

Right

不支持

不支持

SHA1, SHA224 , SHA256 , SHA384 , SHA512

不支持

不支持

Sign

不支持

不支持

Trunc

部分支持。不支持TruncDateTruncTime数据库函数的tzinfo参数。

未计划提供全面支持

Django 功能
当前支持
计划内的 GA 支持

Django Admin

Django 表单

Django 身份验证

管理命令

部分支持。要查看不支持的命令,请参阅以下部分。

未计划提供全面支持

Django MongoDB后端当前支持下表中未包含的所有管理命令。要查看命令的完整列表,请参阅 Django 文档中的可用命令。

Django 命令
当前支持
计划内的 GA 支持

createcachetable

支持。请改用 Django MongoDB后端的 createcachecollection 命令。

不支持

dumpdata

不支持

inspectdb

不支持

支持。不过,我们计划在正式发布后的版本中支持该命令。

loaddata

不支持

sqlflush

不支持

不支持

sqlsequencereset

不支持

不支持

Django 功能
当前支持
计划内的 GA 支持

通过迁移命令创建、删除和更新索引

部分支持。您无法更新嵌入式模型或大量字段上的索引。

未计划提供全面支持

不支持

不支持

migrate --fake-initial 选项

不支持

不支持

当前支持
计划内的 GA 支持

部分支持。支持大多数使用案例。

部分支持。此发布将概述使用案例限制。

部分支持。支持大多数使用案例。

部分支持。此发布将概述使用案例限制。

部分支持。支持大多数使用案例。

部分支持。此发布将概述使用案例限制。

部分支持。支持大多数使用案例。

部分支持。此发布将概述使用案例限制。

后退

执行原始查询

在此页面上