在 MongoDB 中使用 ORM
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 的概念。 保持学习!
相关文章
在 MongoDB Shell 中列出所有数据库
发布时间:2023/05/11 浏览次数:180 分类:MongoDB
-
交互式 Mongo Shell 提供了多个用于获取数据的选项。 本文介绍了在 Mongo Shell 中列出数据库的几种不同方法。
MongoDB 中检查字段包含的字符串
发布时间:2023/05/11 浏览次数:1024 分类:MongoDB
-
这篇文章解决了如何在 MongoDB 中使用正则表达式来确定字段是否包含字符串。在 MongoDB 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。
在 MongoDB 中 upsert 更新插入
发布时间:2023/05/11 浏览次数:214 分类:MongoDB
-
在 MongoDB 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findAndModify() 操作中使用。MongoDB 中的 upsert 查询 upsert 采用单个布尔参数。
如何卸载 MongoDB
发布时间:2023/05/11 浏览次数:745 分类:MongoDB
-
要从您的计算机中卸载 MongoDB,您必须先删除 MongoDB 服务、数据库和日志文件。使用这篇 MongoDB 文章,您将能够从 Ubuntu Linux、Mac 和 Windows 卸载 MongoDB。 请务必保留数据备份,因为一旦卸载,便
在 MongoDB 中存储日期和时间
发布时间:2023/05/11 浏览次数:762 分类:MongoDB
-
本 MongoDB 教程解释了 Date() 对象是什么以及如何使用 Date() 方法对集合进行排序。 这也将帮助您找到在 MongoDB 中显示和存储日期/时间的最佳方法。
MongoDB 按 ID 查找
发布时间:2023/05/11 浏览次数:1856 分类:MongoDB
-
MongoDB 中的 find by Id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 ID 匹配的文档,则返回空值。
检查 MongoDB 服务器是否正在运行
发布时间:2023/05/11 浏览次数:247 分类:MongoDB
-
这篇 MongoDB 教程将告诉您如何检查是否安装了 MongoDB 以及安装的 MongoDB 服务器的版本。 它在 Windows、UBUNTU 和 MAC 等不同的操作系统中实现。
MongoDB 中的分页
发布时间:2023/05/11 浏览次数:174 分类:MongoDB
-
这篇文章将介绍什么是 MongoDB 中的分页。 为什么在 MongoDB 中需要分页以及在 MongoDB 中完成分页的不同方法或方式是什么。
MongoDB 从查询开始
发布时间:2023/05/11 浏览次数:186 分类:MongoDB
-
在这篇 MongoDB 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。