StackOverflow已经提出了这个问题,
问题可以追溯到2013年,现在2015年和Django已经快速成长。
截至2015年,使用mongodb与Django 1.8的情况如何?
Django是否支持开箱即用的Monogodb(使用数据库适配器)?还是应该使用像django-nonrel这样的其他发行版?
答案 0 :(得分:3)
只是我的想法,有些主观和自以为是,但我会说它不能很好地工作。我迅速解散了尝试使用MongoDB运行Django的想法,因为它的auth系统严重依赖关系数据库来工作。
显然有办法解决这个问题,但最终我决定使用MongoDB并不值得我使用MongoDB。
答案 1 :(得分:3)
我不认为Django为MongoDB提供开箱即用的支持。它更适合关系数据库。
一种解决方案可能是使用MongoEngine.
MongoEngine是一个Object-Document Mapper,用Python编写 使用MongoDB。
您需要使用Django配置MongoEngine
然后它应该可以正常工作。
答案 2 :(得分:2)
Django是否支持开箱即用的Monogodb(使用数据库适配器)?
不,它没有。如果你能找到mongodb的django兼容引擎,那么它将完美运行。
好消息是有一种名为django-mongodb-engine
的引擎;坏消息是它依赖django-nonrel
而不是针对最新稳定版本的django进行更新。
因此,如果必须 - 您可以使用MongoDB,但代价是没有可用的更新django功能(更重要的是,任何安全补丁)。
如果你想用mongodb 补充你的主数据库 - 也就是说,mongodb不是你的主数据库,那么这个过程就容易多了。
所以,总结一下:
django 1.8不提供对mongodb(或其他非关系数据库)作为主数据存储的开箱即用支持。
使用第三方django-nonrel
包提供支持,该包位于当前django生产版本的后面。
答案 3 :(得分:1)
我遇到了一个支持MongoDB上最新django的新软件包:djongo
如上所述,mongoengine不支持django的所有contrib应用程序。特别是auth应用程序无法处理mongoengine
Djongo声称将SQL查询编译成mongodb查询。所以它本质上是版本无关的,适用于所有版本的Django。
披露:我通过修复小错误为此包做出了贡献。
答案 4 :(得分:0)
我知道已经过去三年了,但是对于那些想知道MongoDB和Django的人来说,现在应该知道情况没有改变。如前所述,Mongoengine是一个足够好的工具,但仍然存在局限性。例如,当我使用mongoengine将mongodb与django集成时,我无法在我的应用程序中使用弹性搜索。此外,使用mongoDB会失去Django管理员和身份验证功能。因此,MongoDB和Django仍然是一个冒险的选择