@@ -46,6 +46,8 @@ options. You can filter fields with the following data types:
46
46
47
47
- :ref:`String <filter-string>`
48
48
49
+ - :ref:`Date <filter-date>`
50
+
49
51
.. note::
50
52
51
53
You cannot use the same field for multiple filters.
@@ -102,9 +104,6 @@ The list also includes:
102
104
- :guilabel:`Empty String` for documents with ``""`` values for the
103
105
field.
104
106
105
- To include a value not displayed in the list, add a specific value by
106
- clicking :guilabel:`Add Value`.
107
-
108
107
Select the string values to display in the chart. By default, all
109
108
values are selected.
110
109
@@ -119,15 +118,126 @@ values are selected.
119
118
Display Strings Not in the List
120
119
```````````````````````````````
121
120
122
- You can check :guilabel:`All other values` to
123
- display all string values not included in the list.
121
+ To display a specific value not included in the list, add the value by
122
+ clicking :guilabel:`Add Value`.
123
+
124
+ To display *all* other values not included in the list, check
125
+ :guilabel:`All other values`.
124
126
125
127
- If :guilabel:`All other values` is checked, |charts| filters out
126
128
any unchecked list items by using a :query:`$nin` query.
127
129
128
130
- If :guilabel:`All other values` is unchecked, |charts| only
129
131
includes the checked list items by using an :query:`$in` query.
130
132
133
+ .. _filter-date:
134
+
135
+ Filter Date Fields
136
+ ~~~~~~~~~~~~~~~~~~
137
+
138
+ When you drag a date field to the filter panel, you can filter based
139
+ on a specified date range. This range can either be:
140
+
141
+ - A :ref:`relative date <relative-date>` range, which specifies a range
142
+ relative to the time the chart is rendered (e.g., the last six
143
+ months).
144
+
145
+ - An :ref:`absolute date <absolute-date>` range, which is a range
146
+ between specific beginning and end dates.
147
+
148
+ .. _relative-date:
149
+
150
+ Relative Date Filter
151
+ ````````````````````
152
+
153
+ Relative date filters specify a range relative to the
154
+ time the chart is rendered. To define the date range, specify a period
155
+ of time in the past and/or a period of time in the future relative to
156
+ the current date. :guilabel:`Relative` is the default date filtering
157
+ option.
158
+
159
+ To set a lower bound for a relative date filter:
160
+
161
+ 1. Turn on the :guilabel:`From` toggle.
162
+
163
+ #. Set the lower bound for your relative date. This timespan is
164
+ relative to the current date.
165
+
166
+ To set an upper bound for a relative date filter:
167
+
168
+ 1. Turn on the :guilabel:`Until` toggle.
169
+
170
+ #. Set the upper bound for your relative date. This timespan is
171
+ relative to the current date.
172
+
173
+ .. example::
174
+
175
+ The following relative date filter only shows documents
176
+ with a ``Workout Date (As Date)`` field that is more recent than one year
177
+ ago from the current date:
178
+
179
+ .. figure:: /images/charts/relative-date.png
180
+ :scale: 60%
181
+ :alt: Image showing relative date filter
182
+
183
+ .. _absolute-date:
184
+
185
+ Absolute Date Filter
186
+ ````````````````````
187
+
188
+ Absolute date filters use absolute dates to define their upper and lower
189
+ bounds. To define an absolute date range, select :guilabel:`Absolute`
190
+ at the top of your date filter card. The dates specified in the filter
191
+ are assumed to be in :abbr:`UTC (Coordinated Universal Time)`, matching
192
+ the raw data in the collection.
193
+
194
+ To define a lower bound for your absolute date filter:
195
+
196
+ 1. Turn on the :guilabel:`From` toggle.
197
+
198
+ #. Enter a date for your lower bound, or
199
+ select a date from the calendar below the input field.
200
+
201
+ #. Enter a time for your lower bound, or select a time
202
+ from the list below the input field.
203
+
204
+ #. Set :guilabel:`Inclusive` to dictate whether to include
205
+ the specified date.
206
+
207
+ To define an upper bound for your absolute date filter:
208
+
209
+ 1. Turn on the :guilabel:`To` toggle.
210
+
211
+ #. Enter a date for your upper bound, or
212
+ select a date from the calendar below the input field.
213
+
214
+ #. Enter a time for your upper bound, or select a time
215
+ from the list below the input field.
216
+
217
+ #. Set :guilabel:`Inclusive` to dictate whether to include
218
+ the specified date.
219
+
220
+ .. example::
221
+
222
+ The following absolute date filter only shows documents
223
+ with a ``Workout Date (As Date)`` field from the year
224
+ ``2018``:
225
+
226
+ .. figure:: /images/charts/absolute-date.png
227
+ :scale: 60%
228
+ :alt: Image showing absolute date filter
229
+
230
+ |
231
+
232
+ The filter returns all documents with a
233
+ ``Workout Date (As Date)`` field from ``January 1, 2018 12:00:00
234
+ AM`` inclusively, to ``January 1, 2019 12:00:00 AM`` exclusively.
235
+
236
+ .. note::
237
+
238
+ The date and time formats used in your bounds depend
239
+ on your location, as determined from your browser settings.
240
+
131
241
.. _query-bar:
132
242
133
243
Query Bar
@@ -140,12 +250,27 @@ To filter data using the :guilabel:`Query` bar:
140
250
:manual:`db.collection.find()
141
251
</reference/method/db.collection.find/>` method.
142
252
143
- #. Click :guilabel:`Apply`.
253
+ #. Click :guilabel:`Apply`.
144
254
145
- .. note::
255
+ Considerations
256
+ ~~~~~~~~~~~~~~
257
+
258
+ - Filters on large collections may have performance issues if there
259
+ are not appropriate :manual:`indexes <indexes>` on the collection.
260
+
261
+ - The date functions utilized in the |charts| query bar are consistent
262
+ and compatible with the date functions used in the
263
+ :manual:`mongo shell </mongo>`. As a result, you can use:
146
264
147
- Filters on large collections may have performance issues if there
148
- are not appropriate :manual:`indexes <indexes>` on the collection.
265
+ - ``new Date()``,
266
+ - ``ISODate()``, or
267
+ - ``new ISODate()``.
268
+
269
+ |
270
+
271
+ The ``Date()`` function (as opposed to the ``new Date()``
272
+ constructor) returns the current date as a string, so it cannot be
273
+ used for querying dates in |charts-short|.
149
274
150
275
Examples
151
276
~~~~~~~~
@@ -196,54 +321,3 @@ letter ``A`` or ``a``, you would write the following in the
196
321
.. code-block:: javascript
197
322
198
323
{ "job" : { $regex : "^A", $options : "i" } }
199
-
200
- Date Range Query
201
- ````````````````
202
-
203
- The following query returns documents that have a
204
- ``timestamp`` field between January 1, 2017 and December 31, 2017
205
- inclusively:
206
-
207
- .. code-block:: javascript
208
-
209
- {timestamp: {$gte: new Date("2017-01-01"), $lte: new Date("2017-12-31")}}
210
-
211
- .. admonition:: ISO-8601 Dates
212
- :class: note
213
-
214
- The date functions utilized in |charts| queries are consistent and
215
- compatible with the date functions used in the
216
- :manual:`mongo shell </mongo>`. As a result, you can use:
217
-
218
- - ``new Date()``,
219
- - ``ISODate()``, or
220
- - ``new ISODate()``.
221
-
222
- The ``Date()`` function (as opposed to the ``new Date()``
223
- constructor) returns the current date as a string, so it cannot be
224
- used for querying dates in |charts-short|.
225
-
226
- .. _date-filter:
227
-
228
- Relative Date Query
229
- ```````````````````
230
-
231
- You can include a mathematical expression in the ``new Date()``
232
- constructor to get a relative date, such as 1 month ago or 1 year
233
- ago.
234
-
235
- For example, the following query returns documents that
236
- have a ``timestamp`` field greater than 30 days
237
- (30 * 24 * 60 * 60 * 1000 milliseconds) from the current date and time:
238
-
239
- .. code-block:: javascript
240
-
241
- { timestamp: { $gt: new Date(new Date() - 30 * 24 * 60 * 60 * 1000 ) } }
242
-
243
- Alternatively, you can specify the date components. For example, the
244
- following query returns documents that have a ``timestamp`` field
245
- greater than 1 month ago:
246
-
247
- .. code-block:: javascript
248
-
249
- { timestamp: { $gt: new Date(new Date().getFullYear(), new Date().getMonth() -1 , new Date().getDate() ) } }
0 commit comments