Mongoengine 和 Pymongo?

Posted

技术标签:

【中文标题】Mongoengine 和 Pymongo?【英文标题】:Mongoengine and Pymongo? 【发布时间】:2020-08-13 00:50:45 【问题描述】:

我可以使用 mongoengine 或 djongo 进行 ODM 和 pymongo 与 db 交互吗?

我已经阅读了这两篇与我的问题相关的内容:

Insert data by pymongo using mongoengine ORM in pyramid

Use MongoEngine and PyMongo together

但是,我找不到我要找的东西(我猜)。 所以这就是我想要找到的:

¿这种做法会影响我的应用程序的性能吗? ¿ 推荐程度如何?

所以,如果它被推荐,并且一切正常,¿我是否需要增加一层额外的安全性或其他东西?因为,我想使用 django-rest-framework- 的模型的序列化构建一个 API mongoengine 提供,然后在 API 端点的视图中做我必须做的事情。

它可能是 djongo 或类似的东西,我想要的只是一个用于序列化的 ODM,为 API 定义一个结构等等,使用 pymongo 进行查询,因为根据我一直在阅读的内容,mongoengine 可以减慢与数据库的交互

【问题讨论】:

【参考方案1】:

术语“ORM”不适用于 MongoDB,因为 MongoDB 是非关系型的。正确的术语是“ODM”——对象-文档映射器。

通常,MongoDB ODM 构建在 MongoDB 驱动程序之上。 ODM 和驱动程序的功能是互补的 - 驱动程序提供低级数据库访问,而 ODM 提供高级功能,如模式、关联、回调。

如果您想使用高级功能,则可以使用 ODM。如果您不需要任何这些功能并且只想执行基本的 CRUD 操作,那么直接使用驱动程序会更有效。一些应用程序根据需要执行的操作同时使用这两种策略。

【讨论】:

我明白了,我对这个术语有误,但我仍然不清楚,我应该使用它还是不使用它?我的意思是,可能还有更多的 CRUD 操作,我在理解 drf 请求处理时遇到了一些麻烦,因为我不确定我是否可以在可能有数千个请求的 API 中使用 mongod,而且我不确定最终是否会使用多线程或类似的东西 我建议先使用任一选项构建一个工作应用程序。无论哪种方式,您的第一个应用程序都可能会很好。

以上是关于Mongoengine 和 Pymongo?的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyMongo 和 MongoEngine 从 MongoDb 列表中删除对象及其索引?

如何在 mongoengine/pymongo 中设置固定字段

Flask,Pymongo和Mongoengine - ImportError:无法导入名称'app'

MongoDB:运行更快的查询,这更好 Pymongo 或 MongoEngine

无法使用带有 Django 的 MongoEngine Pymongo 返回 JSON 对象?

我可以将 MOTOR 用于 mongoengine 吗?