对于我的一个项目,我更喜欢使用Django+Mongodb.
我为什么要使用蒙戈引擎,但不仅仅是PyMongo?有什么优点?使用 PyMongo 查询给出的结果是已准备好的对象,不是吗?那么 MongoEngine 的目的是什么?
这是一个老问题,但偶然发现它,我不认为接受的答案回答了问题。问题不是“什么是 MongoEngine?” - 这是“我为什么应该使用 MongoEngine?”以及这种方法的优点。一般来说,这超出了 Django 到 Python/Mongo 的范围。我的两分钱:
虽然 PyMongo 和 MongoEngine 都返回对象(这并没有错),但 PyMongo 返回需要通过字符串引用其键的字典。 MongoEngine 允许您通过文档数据的类定义模式。然后,它会将文档映射到这些类中,并允许您操作它们。为什么要为无模式数据定义模式?因为在我看来,它清晰、明确,并且更容易编程。您最终不会得到分散在代码中的字典,如果不实际查看数据或运行程序,您就无法分辨其中的内容。对于 MongoEngine 和像 PyCharm 这样的不错的 IDE,输入一个简单的“.”之后对象会通过自动完成告诉您需要知道的所有信息。对于其他开发人员来说,在工作时检查和学习数据模型也变得更加容易,并且会让那些一段时间没有见过代码的人变得更加高效、更快。
此外,对我来说,使用 PyMongo 操作文档的语法(本质上与 mongo 控制台相同)很丑陋、容易出错且难以维护。
这是在 MongoEngine 中更新文档的基本示例,对我来说,它非常优雅:
BlogPost.objects(id=post.id).update(title='Example Post')
为什么使用 PyMongo? MongoEngine 是您和裸机之间的一层,因此它可能会更慢,尽管我没有任何基准测试。 PyMongo 级别较低,因此您自然拥有更多控制权。对于简单的项目,MongoEngine 可能是不必要的。如果您已经熟悉 Mongo 语法,您可能会发现 PyMongo 比我直观得多,并且编写复杂的查询和更新没有问题。也许您喜欢直接在较低级别上使用字典,并且对额外的抽象层不感兴趣。也许您正在编写一个不属于大系统的脚本,并且您需要它尽可能精简和快速。
争论还有更多内容,但我认为这对于基础知识来说非常好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)