チャート結果のフィルタリング
フィルターは、指定された条件に一致する結果のサブセットを表示します。 Atlas Charts では、単一のグラフのデータをフィルタリングする 2 つの方法が提供されています。 次のいずれかを使用できます。
[ フィルター タブの数値、string、日付、またはブール値フィールドは、データフィルタリング ニーズのほとんどを処理します。
論理演算子クエリなどのより複雑なクエリを使用してデータをフィルタリングするか、 集計パイプラインを使用して未加工データを処理するには、クエリ バーを使用します。
ダッシュボード上の複数のグラフで結果をフィルタリングする方法については、「 フィールド値でダッシュボードをフィルタリング 」を参照してください。
データのフィルターの作成
チャートビルダには、フィールドをドラッグして削除してデータのフィルターを指定できるフィルタータブが含まれています。 フィルター タブを使用してデータをフィルタリングするには、次の手順に従います。
チャートビルダの中央タブをクリックします。
左側の 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 フィールドのみ。 )
チャートに表示する値を選択します。 デフォルトでは、すべての値が選択されています。
Tip
すべての値が選択されている場合は、リストの上部にあるDeselect Allをクリックして、すべての値を非表示にできます。
すべての値が選択されていない場合は、 Select Allをクリックすることで、すべての値が表示されるデフォルト状態に戻すことができます。
リストにない文字列とオブジェクト ID の表示
リストに含まれていない特定の値を表示するには、 Add Valueをクリックして値を追加します。
重要
ObjectIdフィールドの場合、入力する値は正しい形式の ObjectId である必要があります。そうでない場合、Atlas Charts は値を受け入れません。
リストに含まれていない他のすべての値を表示するには、 All other valuesを確認します。
日付フィールドをフィルター パネルにドラッグすると、指定された日付範囲に基づいてフィルタリングできます。 この範囲は次のいずれかになります。
相対日付範囲 。チャートがレンダリングされる時間に対する範囲を指定します(例: 過去 6 か月)。
チャートがレンダリングされる現在時刻に基づく日付範囲(期間の選択)。
特定の開始日から終了日までの範囲である絶対日付範囲。
日付フィルターの詳細については、適切なタブを選択してください。
相対的な日付フィルターは、チャートがレンダリングされる時間を基準とした範囲を指定します。 日付範囲を定義するには、現在の日付に対して過去の期間、または未来の期間を指定します。 Relativeは、デフォルトの日付フィルタリング オプションです。
日付フィルターの下限を設定するには、次の手順に従います。 | 日付フィルターの上限を設定するには、次の手順に従います。 |
---|---|
|
|
例
次の相対日付フィルターでは、現在の日付から 1 年前よりも新しいWorkout Date (As Date)
フィールドを持つドキュメントのみが表示されます。
期間日付フィルターは、チャートがレンダリングされる現在時刻を基準とする範囲を指定します。 期間の日付範囲を定義するには、日付フィルター カードの上部にある [ Periodを選択します。
期間オプションは次のとおりです。
Hour 正午から
Day 午前 0 時から
Week 日曜日の午前 0 時から
Month 毎月の1日の午前 0 時から
Year 1 月の1日の午前 0 時から
[ period ] フィルターにも使用オプションがあります。 期間とともに、使用オプションを使用すると、過去、現在、または未来の正確な時間枠を定義できます。
期間使用オプションは次のとおりです。
方向。 過去の期間を表示するには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 Charts131では、開始日と終了日を含め、
ただし、 Include current periodを選択せずに同じフィルターを設定すると、Atlas Charts には、開始日と終了日を含む、当年の 9 月1から 11 月30までのリリース日を持つドキュメントが表示されます。
期間の日付フィルターを設定するには、次の手順に従います。
最初のドロップダウン メニューから期間の方向を選択します。
テキスト 入力 フィールドに期間数の数値を入力します。 整数または小数値を入力できます。
次のドロップダウン メニューで期間を選択します。
(任意)現在の期間を除外するには、 Include current periodの選択を解除します。 デフォルトではInclude current periodが選択されています。
絶対日付フィルターは、絶対日付を使用して上限と下限を定義します。 絶対日付範囲を定義するには、日付フィルター カードの上部にある [ Absoluteを選択します。 デフォルトでは、フィルターで指定された日付は UTCであると想定され、 コレクション内の未加工データと一致します。 フィルターのタイムゾーンを指定して、日付値を必要に応じて調整できます。
日付フィルターの下限を設定するには、次の手順に従います。 | 日付フィルターの上限を設定するには、次の手順に従います。 |
---|---|
|
|
注意
境界で使用される日付と時刻の形式は、ブラウザの設定から決定されるロケーションによって異なります。
例
次の絶対日付フィルターには、 2018
年からのWorkout Date (As Date)
フィールドを持つドキュメントのみが表示されます。
フィルターでは、 January 1, 2018 12:00:00
AM
からJanuary 1, 2019 12:00:00 AM
までのWorkout Date (As Date)
フィールドを持つすべてのドキュメントが返されます。
タイムゾーンの指定
フィルター カードの下部にあるTime Zoneドロップダウンを使用して、絶対日付フィルターのタイムゾーンを指定します。
デフォルトでは、MongoDB は日付値をUTCで保存します。 タイムゾーンを変更すると、Charts は選択したタイムゾーンに基づいて日付値を変更します。 その結果、選択したタイムゾーンに応じて、異なるドキュメントが絶対日付フィルターによって返される場合があります。
例
1 月1 、 2018 12 : 00 : 00午前から 1 月1 、 2019 12 : 00 : 00午前 までの絶対日付フィルターを検討します排他的。 デフォルトでは、UTC 日付が 1 月1 、 2019 2 : 00 : 00の UTC 日付を持つドキュメントは、この日付範囲に含まれません。 ただし、タイムゾーンをCentral America (UTC-06:00)に調整すると、調整された日付が31年 12 月 、 2018 8 : 00 : 00 PM であるため、このドキュメントが返されます。
特定のフィールドのブール値に基づいてチャート データをフィルタリングできます。 ブール値フィールドをフィルター パネルにドラッグし、利用可能なオプションを表示します。
True は、フィールド値が
true
であるドキュメントを表示します。False は、フィールド値が
false
であるドキュメントを表示します。NULL / MISSING は、 フィールドが
null
であるか、 または 存在しないドキュメントを表示します。
デフォルトではすべてのオプションが選択されています。 選択したオプションを変更すると、チャートのプレビューがアップデートされます。 すべてのオプションの選択を解除すると、空白のグラフが表示されます。
例
次のフィルターを使用するグラフには、 passed
フィールドがtrue
であるドキュメントのみが表示されます。 このチャートには、 passed
フィールドがfalse
、 null
であるか、 または 存在しないドキュメントは表示されません。
注意
複数のフィルターで同じフィールドを使用することはできません。
フィルターを有効または無効にする
Filterタブでフィルターを有効または無効にするかを切り替えることができます。 フィルターを無効にしても、チャートに表示されるドキュメントには影響しません。 無効にされたフィルターはグレー表示され、有効になるまで編集することはできません。
フィルターが有効かどうかを切り替えるには、フィルターにカーソルを合わせ、フィルターの上部に表示されるトグルを 設定に設定します。
フィルターを展開または折りたたむ
チャートフィルター カードで [ ShowまたはHideをクリックすると、チャートフィルター カードを展開または折りたたむことができます。
無効にされたフィルターは自動的に折りたたまれます。
有効になっていても、折りたたまれたフィルターは引き続きチャートに適用されます。
クエリ バーを使用したデータのフィルタリング
チャート表示の上のQueryバーは、フィルター パネルよりも複雑なクエリをサポートしています。 さらに、クエリ バーを使用して、データがレンダリングされる前に処理するための集計パイプラインを作成することもできます。
Queryバーを使用してデータをフィルタリングするには:
Queryバーに、フィルター ドキュメントを入力します。 db.collection.find()のクエリ部分で使用されるのと同じ構文を使用します。 使用して複数のドキュメントを挿入できます。 フィルター ドキュメントは中括弧で囲む必要があります。
[Apply] をクリックします。
次のタブでは、次の演算子を使用してクエリを作成する方法を説明します。
$or
少なくとも 1 つの句が true であるドキュメントを一致させる論理演算子$exists
クエリ演算子: 存在する要素を持つドキュメントを照合する$regex
クエリ演算子 : 正規表現でドキュメントを照合するDate
特定の日付を持つドキュメントを照合するためのフィールド
次のグラフは、ドキュメントまたはアクション映画のいずれかを作成した監督の数における上位 5 国( Limit Results X Axis有効になり、5 に設定されている)を示しています。
このチャートでは、次のクエリを使用します。
{ $or: [ { genres: "Documentary" }, { genres: "Biography" } ] }
genres
は、各要素が映画のジャンルである配列です。 このフィルターにより、特定の国の監督の総数にドキュメントまたはアクション映画のいずれかを作成した監督のみが含まれるようになります。
次のチャートは、 5年ごとの映画の平均メタファー評価を示しています。
このチャートでは、次のクエリを使用します。
{ 'writers.1': { $exists: true }}
writers
は、各要素が映画に貢献したライターである配列です。 このフィルターで、2 番目の配列要素が存在することを確認して、少なくとも 2 人の書込み (write) を持つドキュメントのみが平均メタクリティカル評価に考慮されるようにします。
正規表現を使用してフィルタリングするには、 $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 } } ] }
コレクション内の各ドキュメントは 1 つの販売を表します。 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()
コンストラクターではない)は現在の日付を string として返すため、Charts の日付のクエリには使用できません。