将 Metabase 与 MongoDB 配合使用
使用 Metabase 在 MongoDB 中可视化和探索您的数据。运行 MongoDB 原生查询并分析非表格数据。
在本教程中,我们将使用免费的 MongoDB Atlas 集群和 Metabase Cloud 的免费试用来构建一个探索 MongoDB 样本数据的仪表板。
步骤 1:创建 MongoDB Atlas 集群
-
前往 MongoDB Atlas 并创建账户。
-
创建一个免费的 M0 集群。勾选“预加载样本数据集”框,将样本数据加载到您的集群中 – 我们将在本教程中使用这些数据。
如果您在创建集群后看到集群连接弹出窗口,现在可以将其关闭。在集群配置期间,我们来创建一个将连接到该集群的 Metabase Cloud 实例。
步骤 2:设置 Metabase
- 从 https://metabase.net.cn/cloud 开始。系统会要求您创建一个 Metabase Store 帐户。
- 选择“Starter”计划。别担心:无论您选择哪个计划,您都将获得 14 天的免费试用期,并且您可以随时更改或取消您的计划。
-
为您的 Metabase 选择别名和区域
别名:您将用于登录 Metabase 的 URL。
区域是您的 Metabase 将托管的区域(您可以稍后更改)。
- 您的 Metabase 大约需要 2 分钟进行设置。(在此期间,您可以配置您的 Atlas 集群以允许来自 Metabase 的连接)。您的 Metabase 准备就绪后,系统会要求您为这个新的 Metabase 创建一个单独的帐户(与您的 Metabase Cloud 商店帐户分开)。
您可以在 Metabase 设置屏幕上输入数据库详细信息,但我们现在跳过该步骤,稍后添加数据库。
步骤 3:配置您的 Atlas 集群以允许来自 Metabase 的连接
为确保 Metabase 可以读取集群中的数据,您需要允许来自 Metabase 使用的 IP 地址的访问。
在您的 Atlas 集群设置中,转到 **网络访问** 并添加与您选择的区域对应的 Metabase Cloud IP 地址。
步骤 4:获取 MongoDB 连接信息
要将 Metabase 连接到 MongoDB,您需要获取连接字符串或连接参数。对于 Atlas 集群中的数据库,连接字符串选项更方便。
- 在您的 Atlas 集群界面中,点击 **连接** 并选择 **驱动程序**
-
在“将连接字符串添加到您的应用程序代码中”找到连接字符串
此连接将用于整个 Atlas 集群,但 Metabase 需要连接到特定的数据库。
-
编辑连接字符串以在
/
后添加数据库名称mongodb+srv://metabot:metapass@metabase-magic.a5ej7.mongodb.net/sample_mflix?retryWrites=true&w=majority&appName=metabase-magic
这里我们使用了 Atlas 集群中预加载的 sample_mflix
数据库。
步骤 5:将 Metabase 连接到 MongoDB
您可以在设置 Metabase 时将其连接到 MongoDB,或者在 Metabase 初始化后通过进入 **管理员设置 → 数据库** 来连接数据库。
在连接界面中,点击“粘贴连接字符串”并粘贴连接字符串(请记住将<password>
占位符替换为您的密码!)。
如果您在连接时遇到任何问题,请查阅我们的 MongoDB 连接文档 和 连接故障排除指南。
步骤 5:查看您的数据
一旦 Metabase 连接到您的 MongoDB,您就可以开始在 Metabase 中探索您的数据。如果您仍处于管理员模式,请单击右上角的 **退出管理员**。
在左侧导航侧边栏中,转到“浏览 → 数据库”,然后找到您新添加的数据库及其中的集合。如果您连接到 `sample_mflix` 数据库,您应该会看到“电影”、“影院”、“评论”等集合。
点击一个集合以查看其内容
Metabase 将以表格形式呈现 MongoDB 文档。从这个视图中,您可以开始探索数据。例如,尝试点击标题并筛选数据。
要处理更复杂的文档,您可以使用 Metabase 的查询构建器。
步骤 6:无需编写代码即可构建查询
Metabase 配备了一个图形查询构建器,让您无需编写任何代码即可探索数据。
要开始使用查询构建器,请单击右上角的“+ 新建”按钮,然后选择“问题”。Metabase 中的“问题”是我们称之为查询及其可视化效果的内容。
Metabase 将解析 MongoDB 数据的 JSON 结构,并允许您按单个字段进行筛选、汇总、连接和排序。
例如,我们可以使用 Atlas 集群中预加载的电影样本数据,查看人们是否对新电影的评分低于旧电影。`Movies` 集合中包含的 IMDB 数据如下所示
{
"rating": 7.4,
"votes": 9847,
"id": 439
}
让我们构建一个查询,计算过去 50 年每年 IMBD 电影评分的平均值。
有关查询构建器的更多信息,请查看我们关于如何在查询构建器中提问的分步教程。
请注意,Metabase 识别“IMDB”字段中的子字段,并允许您按这些子字段创建摘要。
要以表格形式预览结果,请单击“汇总”块旁边的“播放”按钮。
步骤 7:创建图表
要创建图表,请点击 **可视化**。
要自定义图表,请单击左下角的设置 **齿轮** 图标。例如,要添加趋势线,请切换到“显示”选项卡并打开“趋势线”。
为了强调评级变化,您可以在“坐标轴”选项卡中编辑 y 轴范围。
看来老电影确实能获得更好的评价!
对图表满意后,点击右上角的“保存”按钮将其保存到集合中。这样,您以后可以重新访问、共享并将其添加到仪表板。
步骤 8:深入挖掘数据
使用查询生成器构建的图表是交互式的:您可以优化或深入挖掘数据。尝试以下操作:
- 单击并拖动以选择时间序列的一个部分进行放大;Metabase 将限制日期范围。
- 点击一个数据点并选择“查看这些电影”,以查看特定年份的单个电影及其评分。
- 点击数据点并选择“按此数据过滤”,以获取所有评分较高的电影。
步骤 9:使用 MongoDB 查询语言进行查询
Metabase 会将您在查询构建器中创建的每个问题转换为 MongoDB 查询。您可以通过单击右上角的“查看原生查询”按钮在查询构建器中查看它生成的查询,并且您可以将任何查询构建器问题转换为 MongoDB 查询。
您还可以从头开始创建原生 MongoDB 查询:单击左上角的“+ 新建 → 原生查询”,选择您的数据库、集合,然后开始编码。
例如,电影样本集合在 Genres
数组中包含电影类型数据。您可以展开该数组并按类型计算平均电影运行时长
[
{ $unwind: "$genres" },
{
$group: {
_id: {
genres: "$genres",
},
avg: {
$avg: "$runtime",
},
},
},
{
$project: {
_id: false,
genre: "$_id.genres",
avg: true,
},
},
];
点击左下角的“可视化”按钮,运行查询并可视化结果。例如,您可以将结果可视化为条形图。
请记住保存您的问题,以便您可以将其添加到仪表板!
后续步骤
接下来您可以在 Metabase 中尝试以下操作