使用 Metabase 与 MongoDB

使用 Metabase 在 MongoDB 中可视化并探索您的数据。运行 MongoDB 原生查询和分析非表格数据。

本教程中,我们将使用免费的 MongoDB Atlas 集群和免费的 Metabase Cloud 试用版来构建一个探索 MongoDB 样本数据的仪表板。

Better dashboard

步骤 1:创建 MongoDB Atlas 集群

  1. 请访问 MongoDB Atlas 并创建一个账户。

  2. 创建一个免费的 M0 集群。勾选“预加载样本数据集”复选框,以便将样本数据加载到您的集群中——我们将在本教程中使用这些数据。

    MongoDB conenction string

创建集群后,如果看到集群连接弹出窗口,您现在可以关闭它。当集群正在配置时,让我们创建一个 Metabase Cloud 实例,该实例将连接到集群。

步骤 2:设置 Metabase

  1. https://metabase.net.cn/cloud 开始。您将需要创建一个 Metabase Store 账户。
  2. 选择入门计划。请放心:无论您选择哪个计划,您都将获得14天的免费试用,并且您以后可以随时更改或取消您的计划。
  3. 选择您的 Metabase 的别名和区域

    别名:您将用于登录 Metabase 的 URL。

    区域是您的 Metabase 将托管的位置(您以后可以更改它)。

  4. 设置您的 Metabase 约需 2 分钟。(在此期间,您可以 配置 Atlas 集群的网络安全访问)。当您的 Metabase 准备就绪后,您将需要为这个新的 Metabase 创建一个单独的账户(与您的 Metabase Cloud 存储账户分开)。

您可以在 Metabase 设置屏幕上输入您的数据库详细信息,但现在让我们跳过这一步,稍后再添加数据库。

步骤 3:配置您的 Atlas 集群以允许 Metabase 连接

为了确保 Metabase 可以读取集群中的数据,您需要允许来自 Metabase 所用 IP 地址的访问。

在您的 Atlas 集群设置中,转到 网络访问 并添加与您选择的区域对应的 Metabase Cloud IP 地址

IP allowlist

步骤 4:获取 MongoDB 连接信息

要连接 Metabase 到 MongoDB,您需要获取连接字符串或连接参数。对于 Atlas 集群中的数据库,连接字符串选项更为方便。

  1. 在您的 Atlas 集群界面中,点击 连接 并选择 驱动程序
  2. “将连接字符串添加到您的应用程序代码中” 中找到连接字符串 MongoDB 连接字符串

    此连接将用于整个 Atlas 集群,但 Metabase 需要连接到特定的数据库。

  3. 编辑连接字符串,在 / 后添加数据库名称

    mongodb+srv://metabot:[email protected]/sample_mflix?retryWrites=true&w=majority&appName=metabase-magic
    

在这里,我们使用了 Atlas 集群中预加载的 sample_mflix 数据库。

步骤 5:将 Metabase 连接到 MongoDB

您可以在设置 Metabase 时将其连接到 MongoDB,或者通过访问 管理员设置 → 数据库 在 Metabase 初始化后连接您的数据库。

在连接界面中,点击“粘贴连接字符串”并粘贴连接字符串(记得将 <password> 占位符替换为您的密码!)

Metabase connection

如果您在连接时遇到任何问题,请参阅我们的 MongoDB 连接文档连接故障排除指南

步骤 5:查看您的数据

一旦 Metabase 连接到您的 MongoDB,您就可以开始在 Metabase 中探索您的数据。如果您还在管理员模式下,请点击右上角的 退出管理员

在左侧导航侧边栏中,转到浏览 → 数据库,找到您刚添加的数据库及其中的集合。如果您连接到 sample_mflix 数据库,您应该会看到电影、影院、评论等集合。

Movies database

单击一个集合以查看其内容

view tables

Metabase将以表格格式展示MongoDB文档。从这个视图开始,您可以开始探索数据。例如,尝试单击标题并过滤数据

Filter by header

要处理更复杂的文档,您可以使用Metabase的查询构建器。

步骤6:构建不写代码的查询

Metabase附带一个图形查询构建器,让您无需编写任何代码即可探索数据。

要开始使用查询构建器,请单击右上角的“+ 新建”按钮,并选择“问题”。“问题”在Metabase中就是我们所说的查询及其可视化。

Metabase将解析MongoDB数据的JSON结构,并允许您根据单个字段进行筛选、汇总、连接和排序。

例如,我们可以使用Atlas集群中预加载的样本电影数据来查看人们是否给新电影评分低于旧电影。电影集合包含类似这样的IMDB数据

{
  "rating": 7.4,
  "votes": 9847,
  "id": 439
}

让我们构建一个查询来计算过去50年中每年IMBD电影评分的平均值

Query builder question

有关查询构建器的更多信息,请查看我们如何在查询构建器中提出问题的逐步教程。

请注意,Metabase识别“IMDB”字段中的子字段,并允许您通过这些子字段创建汇总。

要预览表格中的结果,请单击“汇总”块旁边的“播放”按钮。

步骤7:创建图表

要创建图表,请单击可视化

Time series of rating by year

要自定义图表,请单击左下角的设置齿轮图标。例如,要添加趋势线,切换到“显示”选项卡,然后打开“趋势线”。

要强调评分的变化,您可以在“轴”选项卡中编辑y轴范围。

Chart settings

看起来旧电影确实得到了更高的评分!

一旦您对图表满意,请单击右上角的“保存”按钮将其保存到集合中。这样,您就可以稍后再次访问它、分享它并将其添加到仪表板中。

步骤8:钻取数据

由查询构建器构建的图表是交互式的:您可以细化或钻取数据。尝试以下操作

  • 单击并拖动以选择时间序列的一部分进行放大,Metabase将限制日期范围。
  • 单击数据点并选择“查看这些电影”以查看特定年份的电影及其评分。
  • 单击数据点并选择“按此数据过滤”以获取所有评分更高的电影。

步骤9:使用MongoDB查询语言进行查询

Metabase将您在查询构建器中创建的每个问题都转换为MongoDB查询。您可以通过单击右上角的“查看原生查询”按钮在查询构建器中查看它生成的查询,并将任何查询构建器问题转换为MongoDB查询。

CNative query in the QB

您还可以从头开始创建原生MongoDB查询:单击左上角的“+ 新建 → 原生查询”,选择您的数据库、集合,并开始编写代码。

例如,样本电影集合中在Genres数组中有关于电影流派的数据。您可以展开数组并按流派计算平均电影时长

[
  { $unwind: "$genres" },
  {
    $group: {
      _id: {
        genres: "$genres",
      },
      avg: {
        $avg: "$runtime",
      },
    },
  },
  {
    $project: {
      _id: false,
      genre: "$_id.genres",
      avg: true,
    },
  },
];

运行查询,并通过单击左下角的“可视化”按钮将结果可视化。例如,您可以将结果可视化为一个柱状图

Native query chart

请记住保存您的查询,以便您可以将其添加到仪表板中!

下一步

以下是一些您可以在Metabase中尝试的事情