筛选图表结果
过滤器显示与给定条件匹配的一部分结果。Atlas Charts 提供两种方法以过滤单个图表的数据。您可以使用:
要学习;了解如何在仪表盘上的多个图表中过滤结果,请参阅按字段值筛选仪表盘。
为数据创建过滤器
图表生成器包含一个筛选器选项卡,您可以在其中拖放字段来指定 数据筛选器。使用筛选器选项卡筛选数据:
单击图表生成器中的中心标签页:
将左侧 Fields(字段)中的一个字段拖到此标签页的 Chart Filters(图表筛选器)部分。
所选字段的数据类型决定了可用的筛选选项。 您可以使用以下数据类型筛选字段:
将数值字段拖动到筛选面板后, 可以根据该字段的最小值和/或最大值进行筛选。
要指定最小值: | 要指定最大值: |
---|---|
|
|
例子
如果在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返回到显示所有值的默认状态。
显示不在列表中的字符串和 ObjectId
要显示列表中未包含的特定值,请单击Add Value添加该值。
重要
对于ObjectId字段,您输入的值必须是格式正确的 ObjectId,否则Atlas Charts不接受该值。
要显示列表中未包含的所有其他值,请选中All other values 。
将日期字段拖动到过滤面板时,可以根据指定的日期范围进行过滤。 此范围可以是:
相对日期范围,指定相对于图表呈现时间的范围(例如,过去六个月)。
基于呈现图表的当前时间的日期范围,可以选择时间段。
绝对日期范围,即特定开始日期和结束日期之间的范围。
选择相应的标签页以了解有关日期过滤的更多信息:
相对日期筛选器指定相对于图表呈现时间的范围。 要定义日期范围,请指定相对于当前日期的过去一段时间和/或未来一段时间。 Relative是默认的日期筛选选项。
要设立日期过滤的下限,请执行以下操作: | 要为日期过滤设立上限,请执行以下操作: |
---|---|
|
|
例子
以下相对日期过滤仅显示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的文档,包括开始日期和结束日期。
要设立经期日期过滤:
从第一个下拉菜单中选择周期方向。
在文本输入字段中输入周期计数的数值。 您可以输入整数或小数值。
从下一个下拉菜单中选择一个句点。
(可选)取消选择Include current period以排除当前时间段。 Include current period是默认选择。
绝对日期筛选器使用绝对日期来定义其上限和下限。 要定义绝对日期范围,请选择日期过滤卡顶部的Absolute 。 默认,假定过滤中指定的日期采用 UTC格式,与集合中的原始数据匹配。 您可以为过滤指定时区,以根据需要调整日期值。
要设立日期过滤的下限,请执行以下操作: | 要为日期过滤设立上限,请执行以下操作: |
---|---|
|
|
注意
边界中使用的日期和时间格式取决于您的位置,这根据浏览器设置确定。
例子
以下绝对日期过滤仅显示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
字段为false
、 null
或不存在的文档。
注意
不能在多个筛选器中使用同一字段。
启用或禁用筛选器
您可以启用或禁用 Filter(筛选器)标签页中的筛选器。已禁用的筛选器不会影响图表中显示的文档。已禁用的筛选器显示为灰色,在启用它们之前无法对其进行编辑。
如需切换是否启用筛选器,请将鼠标悬停在筛选器上, 然后将出现在筛选器顶部的切换按钮设置为所需设置。
展开或收起筛选器
您可以通过单击图表筛选器卡上的 Show(显示)或 Hide(隐藏)来展开或折叠该卡。
禁用的筛选器会自动折叠。
启用的折叠筛选器仍会应用于图表。
使用查询栏筛选数据
图表显示上方的Query栏支持比过滤面板更复杂的查询。 此外,您可以使用查询栏创建聚合管道,以便在呈现数据之前对其进行进程。
要使用 Query 栏筛选数据:
在 Query 栏中输入过滤文档。使用与 db.collection.find() 方法查询部分相同的语法。过滤文档必须放在大括号中。
单击 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
字段以字母A
或a
开头的所有文档,您应在Query栏中写入以下内容:
{ "jobs" : { $regex : "^A", $options : "i" } }
下图表显示了一家办公用品公司的总销售额,按购买方式分类:
该图表使用了以下查询:
{ $and: [ { saleDate: { $gte: new Date("2017-01-01") } }, { 'items.4': { $exists: true } } ] }
集合中的每个文档都代表一次销售。 items
是一个大量,其中每个元素都是促销期间购买的商品。
此查询将显示的文档限制为saleDate
等于或晚于January 1, 2017
且items
大量中至少有5元素的文档。
地址查询错误
如果查询无效,Charts 会在 Query(查询)栏中显示 图标。
如果尚未显示 Query(查询)栏,请单击此栏以查看错误详细信息。Charts 显示以下错误的详细信息:
客户端错误,例如格式错误的 JSON,以及
无效 MQL 等服务器端错误。
查看错误详情,然后相应调整查询。
Considerations
如果未对大型集合进行适当索引,则针对大型集合的筛选器可能会遇到性能问题。
Atlas Charts 查询栏中使用的日期函数与 mongo shell 中使用的日期函数一致且兼容。因此,您可以使用:
new Date()
,ISODate()
,或new ISODate()
.
Date()
函数(与new Date()
构造函数不同)以字符串形式返回当前日期,因此不能用于在 Charts 中查询日期。