Docs Menu
Docs Home
/
Atlas Charts
/ /

埋め込みダッシュボードのフィルタリング

項目一覧

  • フィルタ可能なフィールドの指定
  • 埋め込みドキュメントを持つフィールドのフィルタ可能なサブフィールドの指定
  • iFrame に埋め込まれたダッシュボードのデータを事前フィルタリング
  • iFrame に埋め込まれたダッシュボードのデータをフィルタリング
  • フィルター構文
  • SDK が埋め込まれたダッシュボードのデータを事前フィルタリング
  • SDK が埋め込まれたダッシュボードのデータをフィルタリング
  • ユーザー固有のフィルターを挿入する

埋め込みダッシュボードは、以下を追加してカスタマイズできます。

  • 事前フィルター。 Charts 埋め込み SDK で preFilterオプションを使用するか、さまざまなクエリ パラメータを iFrame URL に追加します。

  • フィルター。 Charts 埋め込み SDK でfilterオプションを使用するか、さまざまなクエリ パラメータを iFrame URL に追加します。

使用は任意ですが、同じグラフで事前フィルターと フィルターの両方を使用できます。 事前フィルターは指定されている場合、ビューの後、ダッシュボードのクエリとフィルターの前に常に実行されます。 パイプライン セグメントの順序の詳細については、 集計パイプラインを参照してください。

ダッシュボード作成者は、埋め込みアプリケーション コードによって設定される、またはダッシュボード ビューアによって追加される事前フィルターとフィルターに含めることができるフィールドを指定します。 ダッシュボード作成者は、特定のフィールドのみをフィルタリングできるようにすることで、データへのアクセスを制限できます。 デフォルトでは、フィールドは許可されていません。つまり、少なくとも 1 つのフィールドを明示的に許可するまで、ダッシュボードをフィルタリングできません。

フィルタ可能なフィールドを定義するには、次の手順に従います。

  1. 目的のダッシュボードで、次をクリックします: [] ボタンをクリックし、ドロップダウンから [ Embedを選択します。

  2. Allowed filter fieldsセクションで、 [] ボタン。

    注意

    このオプションは、 非認証または認証済みの埋め込みアクセスがすでに有効になっている場合にのみ表示されます。

    ダッシュボード ビューがデータをフィルタリングできるフィールドは、次の方法で指定できます。

    • ドロップダウンを使用してフィールドを選択します

    • ドロップダウンにリストされていないフィールドを追加するには、値を手動で入力します

    • 選択 Allow all fields in the data source used in this dashboard

  3. 必要なフィールドをすべて選択したら、ドロップダウンの下の [ Save ] をクリックします。

ダッシュボードビューアとダッシュボードをレンダリングするアプリケーションは、指定されたフィールドに基づくフィルターを使用して、元のダッシュボード データのサブセットを表示できるようになりました。 ビューアが、 許可されているフィルター フィールドリストに含まれていないフィールドにフィルターを使用しようとすると、Atlas Charts はエラーを返します。

値が埋め込みドキュメントであるフィールドをAllowed filter fieldsリストに追加する場合は、許可する個々のサブフィールドも指定する必要があります。

次の文書をご覧ください。

{
"name": "Alice",
"favorites" :
{
"color": "green",
"animal": "turtle",
"season": "autumn"
}
}

許可されたフィールドのリストにfavoritesフィールドのみを追加した場合、 favoritesのサブフィールドをフィルタリングする権限はビューアに付与されませ。 代わりに、 favorites.colorfavorites.animal 、またはfavorites.seasonを指定することで、1 つ以上のサブフィールドを個別にリストに追加できます。

多数のコレクションを持つ埋め込みチャートとダッシュボードには事前フィルターを使用します。 事前フィルターは埋め込みチャートのパイプラインの早い段階で実行され、次の結果を得ることができます。

  • データを早期にフィルタリングしてクエリの実行時間を短縮

  • ビューの後にクエリを実行する前にフィルターを適用し、集計を含むクエリにはフィルターを適用します

プレフィルターは フィルターと完全に一致し、同じ構文を使用します。 唯一の違いは、ビューの後に実行され、クエリとフィルターが開始される前に実行されることです。 パイプライン セグメントの順序の詳細については、「集計パイプライン 」を参照してください。

filterクエリ パラメータを使用して、指定された MQLフィルターに一致するデータのみを iFrame に埋め込まれたダッシュボードに表示します。

filterクエリ パラメータはUnauthenticatedダッシュボードでのみ使用できます。 認証されていないダッシュボードでは、ダッシュボード作成者は、埋め込みアプリケーション コードによって設定されるフィルター、またはダッシュボード ビューアによって追加されるフィルターに含めることができるフィールドを指定します。 フィルタ可能なフィールドを指定する方法については、「 フィルタ可能なフィールドの指定 」を参照してください。

フィルタで使用されるフィールドが許可されているフィルタ可能なフィールドのリストに含まれている場合は、 filterクエリ パラメータとして MQL ドキュメントを指定できます。

フィルターは$matchクエリで使用される形式と一致し、次のいずれかである必要があります。

  • トップ レベル クエリ

    { "quantity": { $gte: 20 } }
  • またはブール値内( $ と$nor$or)

    { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] }

注意

フィルター パラメーターの特殊文字を URL エンコードする必要があります。

次の iFrame src URL は、 imdb.rating8以上のドキュメントのみを表示するダッシュボードをレンダリングします。

https://charts.mongodb.com/charts-atlasproject1-piocy/embed/dashboards?
id=93584ddb-1115-4a12-afd9-5129e47bbb0d&
filter={"imdb.rating":%20{$gte:%208}}

URL では、 {"imdb.rating":%20{$gte:%208}}のエンコードされたfilterパラメータが使用されます。 デコードすると、このフィルターは次のようになります。

{"imdb.rating": {$gte: 8}}

preFilterオプションを使用して埋め込みダッシュボードにpreFilterを追加できます。 事前フィルタリングにより、ダッシュボード作成者はクエリ実行前にフィルターを実行できます。

Embedモーダルで、事前フィルターに含めるフィールドを指定する必要があります。 Embedモーダルには、フィルタリングを許可するフィールドのドロップダウン メニューが含まれています。

次の例では、 preFilterオプションを使用してオーストラリア内のドキュメントのみを表します。

createDashboard({
baseUrl: '<your-base-url>',
dashboardId: '<your-chart-id>',
width: 500,
height: 500,
preFilter: { "address.country": "Australia" }
})

filterオプションを使用して埋め込みダッシュボードにフィルターを追加できます。 フィルタリングにより、ダッシュボード作成者は、指定されたMQLフィルターに一致する埋め込みダッシュボード内のデータのみを表示できます。

Embedモーダルで、フィルターに含めるフィールドを指定する必要があります。 Embedモーダルには、フィルタリングを許可するフィールドのドロップダウン メニューが含まれています。

次の では、 filterオプションを使用して、 totalフィールドが100より大きいドキュメントのみを表します。

createDashboard({
baseUrl: '<your-base-url>',
dashboardId: '<your-dashboard-id>',
width: 500,
height: 500,
filter: { "total": { "$gt": 100 } }
})

Authenticatedアクセスを必要とするダッシュボードを埋め込む場合、 Injected function設定を使用して、ダッシュボードを表示する各ユーザーに固有の MongoDB フィルター ドキュメントを挿入できます。 この関数はcontext.token経由で埋め込み認証プロバイダのトークンにアクセスし、トークンに基づいてダッシュボード データをフィルタリングできます。

このフィルターにより、埋め込みダッシュボードのユーザーは自分のデータのみが表示されるようになります。これは、機密情報を含むダッシュボードを埋め込む場合に便利です。

注意

Atlas App Services 認証プロバイダを使用する場合、 context.tokenにはフィルタリングする App Servicesユーザー オブジェクトが含まれます。 たとえば、App Services ユーザーにカスタム ユーザー データを有効にすると、ユーザー オブジェクトはcontext.token.custom_dataで利用できるようになります。

各ユーザーに固有のフィルターを適用するには、 EmbedダイアログのAuthenticatedタブで、 Injected function`setting to :guilabel:`Onを設定します。 関数を指定し、[ Save ] をクリックします。

次のフィルター関数は、ドキュメントのownerIdフィールドが埋め込み認証プロバイダのトークンのsubフィールドの値と一致するデータのみをレンダリングします。

function getFilter(context) {
return { ownerId: context.token.sub };
}

戻る

iFrame