Docs 菜单
Docs 主页
/
Atlas 图表
/

筛选图表结果

在此页面上

  • 为数据创建过滤器
  • 显示不在列表中的字符串和 ObjectId
  • 指定一个时区
  • 启用或禁用筛选器
  • 展开或收起筛选器
  • 使用查询栏筛选数据
  • 地址查询错误
  • Considerations

过滤器显示与给定条件匹配的一部分结果。Atlas Charts 提供两种方法以过滤单个图表的数据。您可以使用:

  • “过滤器选项卡”的数字、字符串、日期或布尔字段可处理大部分数据过滤需求。

  • 查询栏可使用更复杂的查询(例如逻辑运算符查询)筛选数据,或使用聚合管道处理原始数据。

要学习;了解如何在仪表盘上的多个图表中过滤结果,请参阅按字段值筛选仪表盘。

图表生成器包含一个筛选器选项卡,您可以在其中拖放字段来指定 数据筛选器。使用筛选器选项卡筛选数据:

  1. 单击图表生成器中的中心标签页:

    显示如何访问筛选标签页的图片

  2. 将左侧 Fields(字段)中的一个字段拖到此标签页的 Chart Filters(图表筛选器)部分。

所选字段的数据类型决定了可用的筛选选项。 您可以使用以下数据类型筛选字段:

将数值字段拖动到筛选面板后, 可以根据该字段的最小值和/或最大值进行筛选。

要指定最小值:
要指定最大值:
  1. Min 切换到 On

  2. 指定所需的最小值。

  3. 选择该值是否为包含的最小值。

  1. Max 切换到 On

  2. 指定所需的最大值。

  3. 选择该值是否为包含边界值的最大值。

例子

如果在Inclusive设置开启时,最小值为 5 ,则Atlas Charts会显示字段大于或等于5的文档。

或者,如果关闭了 Inclusive 设置,则 Atlas Charts 显示字段大于 5 的文档。

当您将string或ObjectId字段拖动到过滤面板时, Atlas Charts会显示最多包含 20 个不同字段值的列表。 如果存在超过20不同值, Atlas Charts将显示20随机选择的值。

该列表还包括:

  • NULL / MISSING 适用于该字段具有null值或缺少该字段的文档。

  • Empty String 用于string字段值为 "" 的文档。 (仅限string字段。

选择要在图表中显示的值。 默认,会选择所有值。

提示

如果选择了所有值,则可以单击列表顶部的Deselect All以隐藏所有值。

如果未选择所有值,可以单击Select All返回到显示所有值的默认状态。

要显示列表中未包含的特定值,请单击Add Value添加该值。

重要

对于ObjectId字段,您输入的值必须是格式正确的 ObjectId,否则Atlas Charts不接受该值。

要显示列表中未包含的所有其他值,请选中All other values

  • 如果选中All other values , Atlas Charts将使用$nin查询过滤掉任何未选中的列表项。

  • 如果未选中All other values ,则Atlas Charts使用$in查询仅包含选中的列表项。

将日期字段拖动到过滤面板时,可以根据指定的日期范围进行过滤。 此范围可以是:

  • 相对日期范围,指定相对于图表呈现时间的范围(例如,过去六个月)。

  • 基于呈现图表的当前时间的日期范围,可以选择时间段。

  • 绝对日期范围,即特定开始日期和结束日期之间的范围。

选择相应的标签页以了解有关日期过滤的更多信息:

相对日期筛选器指定相对于图表呈现时间的范围。 要定义日期范围,请指定相对于当前日期的过去一段时间和/或未来一段时间。 Relative是默认的日期筛选选项。

要设立日期过滤的下限,请执行以下操作:
要为日期过滤设立上限,请执行以下操作:
  1. 打开 From 开关。

  2. 设置相对日期的下限。 此时间跨度是相对于当前日期的。

  1. 打开 Until 开关。

  2. 设置相对日期的上限。 此时间跨度是相对于当前日期的。

例子

以下相对日期过滤仅显示Workout Date (As Date)字段距离当前日期晚于一年的文档:

显示相对日期过滤的图像

期间日期筛选器指定图表呈现时相对于当前时间的范围。 要定义时间段日期范围,请选择日期过滤卡顶部的Period

期间选项包括:

  • Hour 从每小时最高点开始

  • Day 从午夜开始

  • Week 从周日午夜开始

  • Month 从每月1午夜开始

  • Year 从 1 月1午夜开始

“期间”日期过滤还具有使用选项。 与句点一起,使用选项可让您定义过去、现在或未来的确切时间窗口。

期间使用选项包括:

  • 方向。 您可以选择Previous (显示过去的时间段)或Next (显示未来的时间段)。

  • 计数。 您可以设立要显示的周期数。

  • 包括当前期间。 您可以将当前时间段包含在指定的时间窗口中。

期间使用选项协同工作。 Atlas Charts显示的Month时间段的数据取决于方向、计数和Include current period选择。

Atlas Charts计算您指定的向后(对于Previous )或向前(对于Next )指定的周期数。 计数从当前时间段开始(选择Include current period )或上一个已完成时间段开始(未选择Include current period )。 Atlas Charts显示从所选时间段开始到所选时间段结束的数据。

例子

如果今天是 12 月8 ,并且您使用以下选项设立了针对released的期间日期过滤:

  • Previous

  • 3

  • Months

  • Include current period 已选中

Atlas Charts将显示发布日期从今年 10 月1到今年 12 月31的文档,包括开始日期和结束日期。

显示经期日期过滤的图像

但是,如果您设立相同的过滤而不选择Include current period , Atlas Charts将显示发布日期从今年 9 月1到今年 11 月30的文档,包括开始日期和结束日期。

要设立经期日期过滤:

  1. 从第一个下拉菜单中选择周期方向。

  2. 在文本输入字段中输入周期计数的数值。 您可以输入整数或小数值。

  3. 从下一个下拉菜单中选择一个句点。

  4. (可选)取消选择Include current period以排除当前时间段。 Include current period是默认选择。

绝对日期筛选器使用绝对日期来定义其上限和下限。 要定义绝对日期范围,请选择日期过滤卡顶部的Absolute 。 默认,假定过滤中指定的日期采用 UTC格式,与集合中的原始数据匹配。 您可以为过滤指定时区,以根据需要调整日期值。

要设立日期过滤的下限,请执行以下操作:
要为日期过滤设立上限,请执行以下操作:
  1. 打开 From 开关。

  2. 输入下限日期,或从输入字段下方的日历中选择日期。

  3. 输入下限时间,或从输入字段下方的列表中选择时间。

  4. 设置Inclusive以确定是否包含指定日期。

  1. 打开 To 开关。

  2. 输入上限日期,或从输入字段下方的日历中选择日期。

  3. 输入上限时间,或从输入字段下方的列表中选择时间。

  4. 设置Inclusive以确定是否包含指定日期。

注意

边界中使用的日期和时间格式取决于您的位置,这根据浏览器设置确定。

例子

以下绝对日期过滤仅显示2018年具有Workout Date (As Date)字段的文档:

显示绝对日期过滤的图像

过滤返回具有Workout Date (As Date)字段的从January 1, 2018 12:00:00 AM含)到January 1, 2019 12:00:00 AM不含)的所有文档。

使用过滤卡底部的Time Zone下拉列表为绝对日期过滤指定时区域。

默认, MongoDB以UTC格式存储日期值。 当您更改时区域时, Charts会根据所选时区域修改日期值。 因此,根据所选时区域,绝对日期过滤可能会返回不同的文档。

例子

考虑绝对日期过滤,其范围从 1 月1 , 2018 12 : 00 : 00 AM 到 1 月1 , 2019 12 : 00 : 00 AM独占。 默认,UTC 日期为 1 月1 、 2019 2 : 00 : 00 AM 的文档不会包含在此日期范围。 但是,如果我们将时区域调整为Central America (UTC-06:00) ,则将返回此文档,因为调整后的日期为 12 月31 , 2018 8 : 00 : 00下午。

您可以根据特定字段的布尔值过滤图表数据。 将布尔字段拖动到过滤面板以查看可用选项:

  • True 显示字段值为true的文档。

  • False 显示字段值为false的文档。

  • NULL / MISSING 显示字段为null或不存在的文档。

默认,所有选项均处于选中状态。 修改所选选项时,图表预览会更新。 取消选择所有选项会呈现空白图表。

例子

使用以下过滤的图表仅显示passed字段为true的文档。 图表不会显示passed字段为falsenull或不存在的文档。

显示布尔过滤的图像

注意

不能在多个筛选器中使用同一字段。

您可以启用或禁用 Filter(筛选器)标签页中的筛选器。已禁用的筛选器不会影响图表中显示的文档。已禁用的筛选器显示为灰色,在启用它们之前无法对其进行编辑。

如需切换是否启用筛选器,请将鼠标悬停在筛选器上, 然后将出现在筛选器顶部的切换按钮设置为所需设置。

显示筛选切换的图片
点击放大

您可以通过单击图表筛选器卡上的 Show(显示)或 Hide(隐藏)来展开或折叠该卡。

禁用的筛选器会自动折叠。

启用的折叠筛选器仍会应用于图表。

图表显示上方的Query栏支持比过滤面板更复杂的查询。 此外,您可以使用查询栏创建聚合管道,以便在呈现数据之前对其进行进程。

要使用 Query 栏筛选数据:

  1. Query 栏中输入过滤文档。使用与 db.collection.find() 方法查询部分相同的语法。过滤文档必须放在大括号中。

  2. 单击 Apply(连接)。

以下标签页显示如何使用以下操作符构造查询:

  • $or 逻辑运算符,用来匹配至少一个子句为 true 的文档

  • $exists 查询操作符,用于将文档与存在的元素匹配

  • $regex 查询运算符,用来将文档与正则表达式匹配

  • Date 字段,用于将文档与特定日期匹配

以下图表显示了拍摄过纪录片传记片的导演数量最多的 5 个国家/地区(X Axis 下的 Limit Results 已启用且设置为 5)。

逻辑操作符查询示例
点击放大

该图表使用了以下查询:

{
$or: [
{
genres: "Documentary"
},
{
genres: "Biography"
} ]
}

genres 是一个数组,其中每个元素都是一个电影类型。该筛选器确保只有拍摄过纪录片或传记片的 导演才会被纳入特定国家/地区的导演总数中。

下图表显示了按5年周期分箱的一段时间内电影的平均 Metacritic 评分。

查询比较示例
点击放大

该图表使用了以下查询:

{ 'writers.1': { $exists: true }}

writers 是一个大量,其中每个元素都是为电影做出贡献的作者。 此过滤通过检查第二个大量元素是否存在,确保只有具有至少两个编写器的文档才会计入平均值Metacritic 评级。

使用$regex查询运算符使用正则表达式进行过滤:

{ <field>: { $regex: "pattern", $options: "<options>" } }

示例,要查找jobs字段以字母A开头的所有文档,您应在Query栏中写入以下内容:

{ "jobs" : { $regex : "^A" } }

要查找jobs字段以字母Aa开头的所有文档,您应在Query栏中写入以下内容:

{ "jobs" : { $regex : "^A", $options : "i" } }

下图表显示了一家办公用品公司的总销售额,按购买方式分类:

日期查询示例
点击放大

该图表使用了以下查询:

{
$and: [
{
saleDate: { $gte: new Date("2017-01-01") }
},
{
'items.4': { $exists: true }
} ]
}

集合中的每个文档都代表一次销售。 items是一个大量,其中每个元素都是促销期间购买的商品。

此查询将显示的文档限制为saleDate等于或晚于January 1, 2017items大量中至少有5元素的文档。

如果查询无效,Charts 会在 Query(查询)栏中显示 图标。

如果尚未显示 Query(查询)栏,请单击此栏以查看错误详细信息。Charts 显示以下错误的详细信息:

  • 客户端错误,例如格式错误的 JSON,以及

  • 无效 MQL 等服务器端错误。

筛选错误示例
点击放大

查看错误详情,然后相应调整查询。

  • 如果未对大型集合进行适当索引,则针对大型集合的筛选器可能会遇到性能问题。

  • Atlas Charts 查询栏中使用的日期函数与 mongo shell 中使用的日期函数一致且兼容。因此,您可以使用:

    • new Date(),

    • ISODate(),或

    • new ISODate().

    Date() 函数(与 new Date() 构造函数不同)以字符串形式返回当前日期,因此不能用于在 Charts 中查询日期。

后退

保存和重复使用查询