MongoDB 的图表和数据资源管理器

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

MongoDB 以基于 JSON 文档的格式存储信息。如果子文档的数量增加,文档的复杂性也会增加。使用图表掌握此类文档可能会使您的工作更加轻松。 DbSchema (www.dbschema.com) 可以使用图表表示文档。让我们考虑一下这个 JSON 文档:


 {
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 25,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",                                               _
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    }
  ],
  "children": [],
  "spouse": null
}

这将在 DbSchema 中表示为三个实体,每个子文档一个。

您可能会问这怎么可能,因为 MongoDB 不像关系数据库那样使用模式。好吧,DbSchema 确实通过扫描数据来发现模式。要做的是启动 DbSchema,连接到数据库(提供运行数据库的主机名),然后工作就完成了。

在 DbSchema 中,您可以使用所需的实体创建更多图表。图表称为“布局”,因为在每个布局中您可以打开不同的其他工具,如可视化查询生成器、查询编辑器或关系数据浏览。

如果您的数据库是空的,并且您希望在数据库中创建上面的集合,请在 DbSchema 中打开查询编辑器并执行以下代码:


 {
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 25,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",                                               _
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    }
  ],
  "children": [],
  "spouse": null
}

DbSchema 可以通过 Java Groovy 执行 JSON 命令,这与 MongoDB 原生语言非常相似。主要区别在于数组为 [val1,val2,...] 而映射为 [key1:val1,key2:val2,...] 。在 MongoDB 页面 上阅读有关可能命令的更多信息。

离开应用程序时,您可以将包含图表的项目保存到项目文件中。下次启动应用程序时,所有图表都将保持原样。

关系数据浏览

关系数据浏览是 DbSchema 中的一个工具,用于探索来自多个集合的数据。它的好处在于它可以从引用其他集合数据的集合中探索数据。

为了证明这一点,请考虑以下两个系列。我们看到“员工”集合通过“companyId”引用“公司”。这是数据库内部信息的规范化,因此与公司相关的信息仅存储一次,在公司集合中,并由员工引用。


 {
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 25,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",                                               _
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    }
  ],
  "children": [],
  "spouse": null
}

在下图中,我们有两个集合 employees 和 companies。我们通过将 companyId 拖放到 _id 字段上,创建了一个从员工到公司的 虚拟 外键。虚拟外键帮助我们根据当前选择的公司数据从员工中挖掘数据。

此外键将仅存在于 DbSchema 中。使用它,我们将能够浏览两个集合中的数据并查看每个员工的公司数据,而不必每次都执行单独的查询。随机数据生成器可以从图表中任何集合的右键单击弹出窗口启动,然后通过按第一个浏览框架标题中的外键箭头图标打开第二个框架。

请注意,我们无需在每次访问应用程序时都创建虚拟外键。 DbSchema 将布局(图表)和模式保存到项目文件中,下次访问应用程序时将打开该文件。

查询编辑器

除了图表和关系数据浏览,您还可以使用 MongoDB 的查询构建器和数据加载器。使用查询编辑器,您可以编辑和执行基于 Groovy 语言(一种与 Java 兼容的脚本语言)的查询。结果显示为嵌套表结构。

DbSchema 支持大多数关系数据库和 Mongo DB。该工具是商用的,试用期为两周。