Django 3.2是否支持MongoDB?为何安装包database下无对应文件夹?
Django 3.2 对MongoDB的支持情况说明
- 你排查得到的结论完全符合实际源码情况:Django 3.2 核心框架本身不提供对MongoDB的内置适配支持。
- 你在Django安装包的
django/db/backends目录下找不到MongoDB专属的适配文件夹,是框架的原生设计:该目录下仅内置维护SQLite、MySQL、PostgreSQL、Oracle四类关系型数据库的驱动适配逻辑,从来没有覆盖过非SQL类的文档存储。 - 从架构根源上说,Django的整套ORM体系、迁移系统、查询逻辑都是围绕关系型数据库的设计范式搭建的,和MongoDB这类无固定Schema、基于文档模型、非SQL查询的存储类型适配成本极高,核心团队从未将MongoDB纳入内置适配的范围。
- 如果要在Django 3.2项目中接入MongoDB,必须依赖社区维护的第三方适配组件,这类组件本质是将Django ORM的操作规则转换为MongoDB的文档查询命令,不属于Django官方维护的能力。
- 需要注意的是,所有第三方MongoDB适配都无法100%覆盖Django的全部内置能力,比如和关系型强绑定的多表关联查询、跨库事务、部分复杂数据库迁移逻辑,在MongoDB环境下无法完整落地,接入前需要提前评估项目对这类能力的依赖程度。
内容的提问来源于stack exchange,提问作者Mohammad Ramzan Hossain
相关产品推荐
相关产品推荐

