迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

在 MongoDB 中使用 ORM

作者:迹忆客 最近更新:2023/04/20 浏览次数:

MongoDB 引入了一种用于数据存储和管理的 NoSQL 解决方案,由以 JSON 样式表示的文档组成。 与其他数据库系统一样,MongoDB 也可以使用 ORM。

在本文中,我们将解释 MongoDB 中的 ORM 概念和一般概念。


对象关系映射 (ORM)

对象关系映射是一种可以更轻松地处理关系数据库系统中的数据的技术。 它充当您的业务模型和存储数据库之间的连接桥梁。

ORM 的工作原理是将数据库中作为关系存储的数据映射到应用程序语言中的对象。 这为编写代码的人提供了易于编程的优势,因为现在可以使用相同的编程语言自然而流畅地访问数据。

让我们进一步解释这是如何可能的。

使用面向对象的语言时,程序员必须将数据作为对象存储在业务逻辑层中。 该数据同时以表或关系的形式存储在关系数据库中。

在编码时将此关系数据转换为对象可能会导致应用程序难看。 它也更容易出错,因为程序员必须在一个应用程序中使用两种不同的语言并编写原始查询。

因此,ORM 通过简化这个过程来解决这个问题。


MongoDB 中的 ORM

现在问题出现了,因为 MongoDB 是一个 NoSQL 解决方案并且不使用关系。 ORM 是否仍然适用于它? 答案是肯定的,ORM 也可以用在 MongoDB 中,只是在这里更通俗的称为 ODM。

ODM 代表对象文档映射,由于 MongoDB 将数据存储在文档中,因此将关系替换为文档。

对于像 MongoDB 这样的 NoSQL 数据库,使用 ODM 并不是一个很大的优势,因为它们已经很简单了。 但它带来了提高开发人员生产力的额外好处,这对于应用程序的整体性能至关重要。

但是,ODM 仍然广泛用于 MongoDB。 这是因为 ODM 可以帮助使用数据之间的逻辑关系,否则无法轻松表示这些关系,因为在 NoSQL 中无法识别此类关系。

如果没有 ODM,程序员必须手动执行这些代码关系。 由于MongoDB是面向文档的架构,非常适合与ODM集成,因为文档也可以称为对象。

因此,ODM 框架与 MongoDB 一起使用,以提供对数据模型层的抽象。

MongoDB 的 ORM 示例

有许多 ORM 库可用于为各种语言编写的 MongoDB。

其中一些也是开源的。 我们将在本文中查看几个示例。

Mongoid

Mongoid 适用于使用 Ruby on Rails 框架的应用程序。 使用 Mongoid ODM 作为基于 Ruby 的应用程序的 MongoDB ORM,程序员可以更轻松地使用数据库资源,因为他们已经熟悉该语言,这也是使用 ODM 的好处。

例如,这里有一个代码片段,它使用 Mongoid 将一个实例插入到数据库中。

Person.create!(
first_name: "Ali",
last_name: "Raza"
) # => Person instance

以下是使用 Mongoid 编写的 MongoDB 查询示例。

Person.
where(:dob.gte => "1990-01-01").
in(first_name: [ "Ali", "Raza" ]).
union.
in(first_name: [ "Ahmad" ])

spring Data MongoDB

MongoDB 的基于 Java 的 ORM 开发人员最流行的选择是 Spring Data MongoDB。 它为新数据库的编程提供了一致的基于 Spring 的模型。

您可以通过在 <dependencyManagement> 标记内的 pom.xml 文件中使用以下依赖项,将 Spring Data MongoDB 集成到您的 Maven 项目中。

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-bom</artifactId>
<version>2022.0.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>

MongoEngine

MongoEngine 是 Python 中 MongoDB 的 ODM。 它使用一个简单的高级 API 并构建在 PyMongo 之上,PyMongo 是 Python 的官方 MongoDB 驱动程序。

下面是一个示例,说明如何通过定义一个继承自 Document 的类,使用 MongoEngine 在 Python 中创建数据库模式。

from mongoengine import *
import datetime

class Page(Document):
title = StringField(max_length=200, required=True)
date_modified = DateTimeField(default=datetime.datetime.utcnow)

以下是访问数据库的一些简单查询:

for page in Page.objects:
print page.title
myPage = Page.objects(title='Title')

总结

在本文中,我们详细描述了 MongoDB 中 ORM 的用法,这有助于最大限度地降低开发过程的复杂性。 ORM 充当翻译器,将您的数据库文档转换为您正在编码的语言的对象,从而使程序员的任务变得简单。

我们还讨论了一些 MongoDB ORM 示例的工作。 在本文的范围内不可能详细介绍它们中的每一个。

我们希望您已经了解了 MongoDB 中 ORM 的概念。 保持学习!

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

比较 MongoDB 中的字段

发布时间:2023/04/21 浏览次数:51 分类:MongoDB

在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。

清除或删除 MongoDB 中的集合

发布时间:2023/04/21 浏览次数:147 分类:MongoDB

本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。

MongoDB 截断集合

发布时间:2023/04/21 浏览次数:178 分类:MongoDB

可以根据需要选择两个选项之一来截断下面的集合。 在今天的文章中,我们将学习如何在 MongoDB 中截断集合。

删除 MongoDB 中的重复项

发布时间:2023/04/21 浏览次数:151 分类:MongoDB

在本文中,我们将了解如何删除 MongoDB 中的重复条目,并且我们还将看到一个带有适当解释的示例,以使主题更容易理解。

使用 NodeJS 检查 MongoDB 中是否存在集合

发布时间:2023/04/21 浏览次数:194 分类:MongoDB

在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。

MongoDB 中的唯一索引

发布时间:2023/04/21 浏览次数:144 分类:MongoDB

在这篇教学文章中,您将了解唯一索引、它们是什么以及如何在 MongoDB 中使索引唯一。 此外,还简要详细地解释了使用户的电子邮件在 MongoDB 中唯一。

在 MongoDB 中创建索引

发布时间:2023/04/21 浏览次数:104 分类:MongoDB

索引有助于有效解决查询。 如果没有索引,MongoDB 必须遍历集合中的每个文档才能找到与查询匹配的文档。因此,在今天的文章中,我们将学习如何在 MongoDB 中创建索引。

MongoDB 中的稀疏索引

发布时间:2023/04/21 浏览次数:142 分类:MongoDB

在本文中,我们将讨论 MongoDB 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便