埋め込みダッシュボードは、以下を追加してカスタマイズできます。
事前フィルター。 Charts 埋め込み SDK で
preFilterオプションを使用するか、さまざまなクエリ パラメータを iFrame URL に追加します。フィルター。 Charts 埋め込み SDK で
filterオプションを使用するか、さまざまなクエリ パラメータを iFrame URL に追加します。
使用は任意ですが、同じグラフで事前フィルターと フィルターの両方を使用できます。 事前フィルターは指定されている場合、ビューの後、ダッシュボードのクエリとフィルターの前に常に実行されます。 パイプライン セグメントの順序の詳細については、「集計パイプライン 」を参照してください。
フィルタ可能なフィールドの指定
ダッシュボード作成者は、埋め込みアプリケーション コードによって設定される、またはダッシュボード ビューアによって追加される事前フィルターとフィルターに含めることができるフィールドを指定します。 ダッシュボード作成者は、特定のフィールドのみをフィルタリングできるようにすることで、データへのアクセスを制限できます。 デフォルトでは、フィールドは許可されていません。つまり、少なくとも 1 つのフィールドを明示的に許可するまで、ダッシュボードをフィルタリングできません。
フィルタ可能なフィールドを定義するには、次の手順に従います。
Dashboards ページから、目的のダッシュボードを選択します。ダッシュボードに移動する手順については、「ダッシュボード」を参照してください。
目的のダッシュボードで、次をクリックします: [] ボタンをクリックし、ドロップダウンから [ Embed ] を選択します。
Allowed filter fieldsセクションで、 [] ボタン。
注意
このオプションは、 非認証または認証済みの埋め込みアクセスがすでに有効になっている場合にのみ表示されます。
ダッシュボード ビューがデータをフィルタリングできるフィールドは、次の方法で指定できます。
ドロップダウンを使用してフィールドを選択します
ドロップダウンにリストされていないフィールドを追加するには、値を手動で入力します
選択 Allow all fields in the data source used in this dashboard
必要なフィールドをすべて選択したら、ドロップダウンの下の [ Save ] をクリックします。
ダッシュボード ビューアとダッシュボードをレンダリングするアプリケーションは、指定されたフィールドに基づくフィルターを使用して、元のダッシュボード データのサブセットを表示できるようになりました。許可されているフィルター フィールド リストに含まれていないフィールドにフィルターを使用しようとすると、Atlas Charts はエラーを返します。
埋め込みドキュメントを持つフィールドのフィルタ可能なサブフィールドの指定
値が埋め込みドキュメントであるフィールドをAllowed filter fieldsリストに追加する場合は、許可する個々のサブフィールドも指定する必要があります。
例
次の文書をご覧ください。
{ "name": "Alice", "favorites" : { "color": "green", "animal": "turtle", "season": "autumn" } }
許可されたフィールドのリストにfavoritesフィールドのみを追加した場合、 favoritesのサブフィールドをフィルタリングする権限はビューアに付与されません。 代わりに、 favorites.color 、 favorites.animal 、またはfavorites.seasonを指定することで、1 つ以上のサブフィールドを個別にリストに追加できます。
iFrame に埋め込まれたダッシュボードのデータを事前フィルタリング
多数のコレクションを持つ埋め込みチャートとダッシュボードには事前フィルターを使用します。 事前フィルターは埋め込みチャートのパイプラインの早い段階で実行され、次の結果を得ることができます。
データを早期にフィルタリングしてクエリの実行時間を短縮
ビューの後にクエリを実行する前にフィルターを適用し、集計を含むクエリにはフィルターを適用します
プレフィルターは フィルターと完全に一致し、同じ構文を使用します。 唯一の違いは、ビューの後に実行され、クエリとフィルターが開始される前に実行されることです。 パイプライン セグメントの順序の詳細については、「集計パイプライン 」を参照してください。
iFrame に埋め込まれたダッシュボードのデータをフィルタリング
filterクエリ パラメータを使用して、指定されたMQLフィルターに一致するデータのみを iFrame に埋め込まれたダッシュボードに表示します。
クエリ filterパラメータはUnauthenticated ダッシュボードでのみ使用できます。認証されていないダッシュボードでは、ダッシュボード作成者は、埋め込みアプリケーションコードによって設定されるフィルター、またはダッシュボード ビューアによって追加されるフィルターに含めることができるフィールドを指定します。フィルタ可能なフィールドを指定する方法については、「 フィルタ可能なフィールドの指定 」を参照してください。
フィルター構文
フィルタで使用されるフィールドが許可されているフィルタ可能なフィールドのリストに含まれている場合は、 クエリ パラメータとしてMQLドキュメントを指定できます。filter
フィルターは$match クエリで使用される形式と一致し、次のいずれかである必要があります。
トップ レベル クエリ
例
{ "quantity": { $gte: 20 } }
注意
フィルター パラメーターの特殊文字を URL エンコードする必要があります。
例
次の iFrame src URL は、 imdb.ratingが8以上のドキュメントのみを表示するダッシュボードをレンダリングします。
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}}
SDK が埋め込まれたダッシュボードのデータを事前フィルタリング
preFilterオプションを使用して埋め込みダッシュボードにpreFilterを追加できます。 事前フィルタリングにより、ダッシュボード作成者はクエリ実行前にフィルターを実行できます。
Embedモーダルで、事前フィルターに含めるフィールドを指定する必要があります。 Embedモーダルには、フィルタリングを許可するフィールドのドロップダウン メニューが含まれています。
次の例では、 preFilterオプションを使用してオーストラリア内のドキュメントのみを表します。
createDashboard({ baseUrl: '<your-base-url>', dashboardId: '<your-chart-id>', width: 500, height: 500, preFilter: { "address.country": "Australia" } })
SDK が埋め込まれたダッシュボードのデータをフィルタリング
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経由で埋め込み認証プロバイダのトークンにアクセスし、トークンに基づいてダッシュボード データをフィルタリングできます。
このフィルターにより、埋め込みダッシュボードのユーザーは自分のデータのみが表示されるようになります。これは、機密情報を含むダッシュボードを埋め込む場合に便利です。
各ユーザーに固有のフィルターを適用するには、 EmbedダイアログのAuthenticatedタブで、 Injected function`setting to :guilabel:`Onを設定します。 関数を指定し、[ Save ] をクリックします。
例
次のフィルター関数は、ドキュメントのownerIdフィールドが埋め込み認証プロバイダのトークンのsubフィールドの値と一致するデータのみをレンダリングします。
function getFilter(context) { return { ownerId: context.token.sub }; }