MongoDB 图表 - 文档随时间的累积增长

MongoDB Charts - Cumulative document growth over time

我有一个 atlas 集群并将图表连接到它。我对数据可视化(或构建仪表板)的经验为零,我想绘制数据库中文档数量随时间变化的图表。例如,如果在 1 月创建了 10 个文档,并在 2 月创建了另外 10 个文档,则图表应显示 10 表示 1 月,20 表示 2 月。

我知道 _id 字段有文档创建时的信息,但我不知道如何在图表中显示它。到目前为止,我所拥有的只是在 y 轴上使用 _id 的文档计数。

完成我想做的事情的最佳方法是什么?在这种情况下使用条形图是最好的可视化方式吗?

此外,出于某种原因,每当我创建图表时,我都会收到提示“查询定位:扫描的对象/返回的对象已超过 1000”。有什么办法可以阻止这种情况发生吗?

问题分为两部分。我会独立回答每一个问题。

首先关于显示购物车

你说得对,_id 包含所有信息,它是经过编码的。所以你必须解码它来获取这些属性。鉴于我们必须在聚合管道中执行此操作,这可能很快就会变得非常复杂。

我更推荐引入一个名为created_at的字段,它是插入文档时生成的时间戳。然后你只需要一个简单的 $group on created_at with count.这样就可以很好地显示数据(在这种情况下,条形图或折线图就足够了)。

第二 - 从 Atlas 收到的关于查询目标比率的警报

我们首先需要了解Alert 的含义。它本质上意味着没有的比例。从磁盘扫描的文档数量与否。从磁盘返回的文档数量超过 1000。这意味着您在磁盘中扫描的记录比您需要的多 1000 倍——这可以解释为索引查询不佳。

您可以通过为聚合中使用的 $match 过滤器创建一个支持索引来简单地解决这个问题。如果没有 $match 那么很遗憾,您将不得不接受警报,因为在这种情况下不会选择索引。

基本上您需要执行以下操作:

  1. 由于要将_id 字段视为日期,因此需要单击_id 字段旁边的“...”按钮并选择“转换类型”,然后选择“日期”。

  2. 现在确保您选择了柱形图

  3. 将 _id 字段(现在应显示为日期)拖到 X 轴上。保持“Binning”开关打开并选择你想要的 binning 周期(Month 是默认值,似乎是你想要的)。

  4. 现在也将 _id 字段拖到 Y 轴上。保持默认的 COUNT 聚合处于选中状态。该图表现在应显示每月创建的文档数。

  5. 最后,启用“比较期间”开关并选择默认的“累计总计”选项。

下面是“应该”的结果。