mongodb 中的外键-ag捕鱼王app官网

当前位置:ag捕鱼王app官网 > > 数据库 > mongodb >

mongodb 中的外键

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

mongodb 是一个众所周知的数据库,它可以在没有模式的情况下工作。 相反,它使用类似 json 的文件来保存数据并且不强加任何结构。

与传统的 rdbms 不同,mongodb 需要一种独特的数据库设计方法。 但是,总的来说,数据库更容易扩展,因为它没有施加很多限制。


外键

外键是链接两个表的一列或一组列。 它包含链接到子表中其他列的父表中的主键列。

以两个表为例:国家和城市。 我们想将这两个表链接在一起,以便每个城市都与适当的国家相关联。

可以使用外键来完成此操作:

外键

如果我们从上面示例中的 city 表中读取数据,我们可以看到每个城市都有一个关联的 country_id。 这将允许您通过单个查询搜索巴基斯坦的所有城市。

创建外键时,我们可以指定如果数据被修改或销毁应该发生什么。 比如我们可以选择级联,就是说如果一个国家被淘汰了,所有和它有关联的城市也都被淘汰了。

我们也可以设置为null,即删除country数据库中的数据时,链接的城市设置为null。


mongodb 引用

通常,mongodb 不使用外键的概念。 但是,关系数据库可以使用外键同时可视化来自多个集合的数据。

mongodb 存储数据的方式也不同。 例如,mongodb 使用集合、对象和字段,而不是使用表、列和行。

mongodb 提供了两种不同的方式在集合中存储数据:非规范化和规范化。

反规范化

在非规范化中,同一个集合包含多种数据。

下面的示例演示了如何将与每个人链接的地址嵌入到人员集合中。

> db.persons.findone()
{
    name: 'ali ikram',
    addresses : [
        { street: '123 pwd', city: 'rawalpindi', cc: 'pak' },
        { street: '123 abc', city: 'faisalabad', cc: 'pak' }
    ]
}

适合一对多。 它的优点是不需要对另一个文档执行额外的查询。

但是,它不能单独管理嵌入文档的实体。

规范化

在规范化中,不同的数据存储在不同的集合中。 这个过程类似于在关系数据库中存储数据,但我们使用集合而不是表。

在 mongodb 中,引用主要用于规范化过程。 然后将来自子表的引用(通常是对象 id)嵌入到父表中。

阅读信息时,用户必须执行多个查询才能从多个集合中检索数据。

例如,我们将采用以下两个集合,students 和 courses。 一门课程将包含课程集合中引用的许多学生。

您可以在 mongodb 中定义所谓的外键。 但是,您需要自己维护数据完整性。

例子:

students
{
    _id: objectid(...),
    name: 'haris',
    courses: ['chem101', 'chem102']   // <= ids of the courses
}
courses
{
    _id: 'chem101',
    name: 'chemistry 101',
    description: 'introduction to chemistry'
}

courses 字段包含课程的 _id。 定义一对多关系非常简单。

但是,如果要检索学生 haris 的课程名称,则需要执行另一个操作以通过 _id 检索课程文档。

如果课程 chem101 被删除,我们需要执行另一个操作来更新学生文档中的课程字段。


在 mongodb 中创建虚拟外键

dbschema 将模式的本地图像保存在模型文件中。 这意味着您可以离线处理项目而无需连接到数据库。

重新连接后,您可以比较和同步数据库与本地项目文件之间的差异。 您还可以使用项目文件构建虚拟外键关系。

这些外键只能在dbschema中使用,对数据库没有影响。

可以快速轻松地制作外键。 以城市和国家集合为例。 作为参考,两者都有一个名为“国家/地区 id”的公共字段。

外键 2

将一列拖放到另一列上以创建外键。 这将创建一个新窗口,您可以在其中为外键提供描述并添加其他字段。

使用虚拟外键在 mongodb 中更快地浏览数据

您可以使用虚拟外键浏览您集合中的数据。 此外,关系数据编辑器允许您同时浏览来自多个集合的数据。

您可以使用外键快速浏览与国家相连的城市。


总结

借助这篇 mongodb 教程文章,您了解了如何将 mongodb 集合可视化为图表并使用 dbschema 构建虚拟外键。 您现在还应该能够同时浏览来自不同集合的数据。

另外,虚拟外键只会保存在本地工程文件中,不会影响数据库。

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

本文地址:

相关文章

在 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 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图