임베딩된 차트 필터링
이 페이지의 내용
다음을 추가하여 포함된 차트를 사용자 지정할 수 있습니다.
사전 필터. Charts 임베딩 SDK에서
preFilter
옵션을 사용하거나 iframe URL에 다양한 쿼리 매개변수를 추가합니다.필터. Charts 임베딩 SDK에서
filter
옵션을 사용하거나 iframe URL에 다양한 쿼리 매개변수를 추가합니다.
사전 필터와 필터를 모두 사용하는 것은 선택 사항인 경우에도 동일한 대시보드 에서 사용할 수 있습니다. 지정된 경우 사전 필터는 항상 차트 뷰 이후, 대시보드의 쿼리 및 필터 이전에 실행 됩니다.
참고
대시보드에서 Atlas Charts를 임베드하려면 데이터 소스에서 임베딩 옵션을 구성해야 합니다. 지침은 다음을 참조하세요.
임베딩된 Atlas Charts와 Atlas Charts를 임베딩된 대시보드에서 필터링할 수 있습니다.
필터링 가능한 필드 지정
차트 작성자 는 임베딩 애플리케이션 코드로 설정하다 하거나 차트 뷰어가 추가한 사전 필터 및 필터에 포함할 수 있는 필드를 지정합니다. 차트 작성자는 특정 필드만 사전 필터링하거나 필터링하도록 허용하여 데이터에 액세스 를 제한할 수 있습니다. 기본값 필드는 허용되지 않으므로 하나 이상의 필드 를 명시적으로 허용할 때까지 차트 를 사전 필터링하거나 필터링할 수 없습니다.
사전 필터 및 필터에 대해 필터링 가능한 필드를 정의하려면 다음을 수행합니다.
필터링 가능한 필드를 정의하려는 차트가 포함된 대시보드 로 이동합니다.
원하는 차트에 대해 다음을 클릭합니다. 버튼을 클릭하고 드롭다운에서 Embed Chart 를 선택합니다.
Allowed filter fields 섹션에서 드롭다운을 사용하여 차트 뷰어가 차트에서 필터 데이터를 사용할 수 있는 필드를 선택합니다. 또한 값을 수동으로 입력하여 드롭다운에 나열되지 않은 필드를 추가할 수도 있습니다.
참고
이 옵션은 인증되지 않음 또는 인증 된 임베딩 액세스를 이미 활성화한 경우에만 표시됩니다.
차트 뷰어가 데이터를 사전 필터링하거나 필터하다 할 수 있는 필드를 지정하려면 다음을 수행합니다.
드롭다운을 사용하여 필드를 선택합니다.
드롭다운에 나열되지 않은 필드를 추가하려면 값을 수동으로 입력합니다.
Allow all fields in the data source used in this chart0}을 선택합니다.
원하는 필드를 모두 선택했으면 드롭다운 아래의 Save 를 클릭합니다.
차트를 렌더링하는 차트 뷰어 및 애플리케이션은 이제 지정된 필드를 기반으로 하는 사전 필터 및 필터를 사용하여 원본 차트 데이터의 하위 집합을 표시할 수 있습니다. 뷰어가 허용된 필터하다 필드 목록에 포함되지 않은 필드 에 필터하다 를 사용하려고 하면 Atlas Charts 에서 오류를 반환합니다.
내장된 문서가 있는 필드에 필터링 가능한 하위 필드 지정
내장된 문서가 값인 Allowed filter fields 목록에 필드를 추가하는 경우 허용하려는 각 개별 하위 필드도 지정해야 합니다.
예시
다음 문서를 살펴보세요.
{ "name": "Alice", "favorites" : { "color": "green", "animal": "turtle", "season": "autumn" } }
허용된 필드 목록에 favorites
필드만 추가하는 경우 최종 사용자가 favorites
의 하위 필드를 필터링할 수 있는 권한을 부여하지 않습니다 . 대신 favorites.color
, favorites.animal
또는 favorites.season
를 지정하여 목록에 하나 이상의 하위 필드를 개별적으로 추가할 수 있습니다.
iframe에 임베딩된 Charts 에서 데이터 사전 필터링
임베딩된 차트 및 많은 수의 컬렉션이 있는 대시보드에 사전 필터를 사용합니다. 사전 필터는 포함된 차트 파이프라인 의 이전 단계에서 실행 되며 다음을 수행할 수 있습니다.
데이터를 조기에 필터링하여 쿼리 실행 시간을 줄입니다.
애그리게이션이 포함된 차트 쿼리의 경우 쿼리 를 실행하기 전에 필터를 적용합니다.
사전 필터는 필터와 정확히 동일하게 작동하며 동일한 구문을 사용합니다. 유일한 차이점은 차트 뷰 이후와 차트 쿼리 및 필터가 시작되기 전에 실행 된다는 것입니다. 파이프라인 세그먼트의 순서에 학습 보려면 집계 파이프라인 을 참조하세요.
iframe에 포함된 차트 의 경우 차트 쿼리 실행 이 시작되기 전에 preFilter
쿼리 매개변수를 사용하여 데이터를 필터하다 합니다.
필터에 사용된 필드가 필터링 가능한 허용 필드 목록에있는 경우 MQL 문서를 preFilter
쿼리 매개변수로 지정할 수 있습니다.
사전 필터 예시
다음 예시 에서는 차트 보기, 쿼리 , 필터 및 사전 필터가 함께 작동하는 방식을 보여 줍니다.
다음 시나리오를 생각해 보겠습니다.
Charts 보기에는 다음이 포함됩니다.
[ { $project: { accommodates: 1, "bedrooms": 1, "address.country": 1 } } ] 쿼리 표시줄에는 다음이 포함됩니다.
[ { $match: { accommodates: { $gte: 3 } } }, { $project: { address: 0 } } ] 내장된 차트 의 필터하다 에는 다음이 포함됩니다.
{ "bedrooms": { $lte: 3 } } 내장된 차트 의 사전 필터에는 다음이 포함됩니다.
{ "address.country": "Australia" }
이전 예시 에서는 차트의 쿼리 가 실행 되기 전에 오스트레일리아에 있는 아파트만 찾도록 사전 필터가 적용됩니다. 그런 다음 차트의 쿼리 가 실행되어 3명 이상을 수용할 수 있는 모든 아파트를 식별합니다.
iframe에 임베딩된 Charts에서 데이터 필터링
iframe에 포함된 차트에 지정된 MQL 필터와 일치하는 데이터만 표시하려면 filter
쿼리 매개변수를 사용합니다.
Unauthenticated 및 Verified Signature 차트 모두에서 filter
쿼리 매개변수를 사용할 수 있습니다. 필터링 동작은 각 인증 설정에 따라 다릅니다.
인증되지 않은 차트의 경우 차트 작성자 는 임베딩 애플리케이션 코드로 설정하다 한 필터에 포함하거나 차트 뷰어가 추가할 수 있는 필드를 지정합니다. 필터링 가능한 필드를 지정하는 방법을 학습 보려면 필터링 가능한 필드 지정을 참조하세요.
Atlas Charts가 필요한 서명이 확인된 경우, 모든 문서 필드를 필터링할 수 있지만, 서버 측 코드에서 필터를 생성하고 서명된 페이로드의 일부로 해당 필터를 포함해야 합니다.
필터 구문
해당 탭을 선택하면 Unauthenticated 차트 및 Verified Signature 차트에서 데이터를 필터링하는 방법의 예를 볼 수 있습니다.
필터에 사용된 필드가 필터링 가능한 허용 필드 목록에있는 경우 MQL 문서를 filter
쿼리 매개변수로 지정할 수 있습니다.
필터는 $match 쿼리에 사용된 형식과 일치해야 하며 다음 중 하나여야 합니다.
최상위 쿼리
예시
{ "quantity": { $gte: 20 } } 또는 부울 표현식 내에서 ( $and, $nor, $or )
예시
{ $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] }
참고
필터 매개변수의 특수 문자는 URL 인코딩해야 합니다.
예시
다음 iframe src
URL은 가 이상인 문서만 표시하는 차트를 렌더링합니다.imdb.rating
8
https://charts.mongodb.com/charts-atlasproject1-piocy/embed/charts? id=93584ddb-1115-4a12-afd9-5129e47bbb0d& filter={"imdb.rating":%20{$gte:%208}}& autoRefresh=60
URL은 {"imdb.rating":%20{$gte:%208}}
의 인코딩된 filter
매개변수를 사용합니다. 디코딩된 이 필터는 다음과 같습니다.
{"imdb.rating": {$gte: 8}}
MQL 문서 를 filter
쿼리 매개변수로 지정합니다.
필터하다 는 다음 예제에 표시된 대로 $match 쿼리 에 사용된 형식과 일치해야 합니다.
예시
{ "quantity": { $gte: 20 } }
예시
{ $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] }
확인된 서명에서 필터를 사용할 때 MQL 쿼리에는 서버 측 코드가 서명을 계산하기 전에 URL 인코딩되어야 하는 문자가 포함됩니다. Charts 는 서명을 확인할 때 JavaScript 인코딩 URIComponent{ 를 사용하여 필터하다 를 다시 URL 인코딩합니다. 함수입니다. 필터하다 를 인코딩하려면 동일한 인코딩 알고리즘 을 사용해야 합니다.
중요
필터하다 의 공백을 +
또는 원시 공백이 아닌 %20
로 인코딩해야 합니다.
다양한 서버 측 프로그래밍 언어를 사용하여 필터하다 를 올바르게 인코딩하는 방법을 확인하려면 MQL Atlas Charts 임베딩 예제 를 Github 참조하세요. 에서 .
예시
다음 iframe src
URL은 가 이상인 문서만 표시하는 차트를 렌더링합니다.imdb.rating
8
https://charts.mongodb.com/charts-atlasproject1-piocy/embed/charts? id=93584ddb-1115-4a12-afd9-5129e47bbb0d& timestamp=1564156636& expires-in=300& filter=%7B%22imdb.rating%22%3A%20%7B%24gte%3A%208%7D%7D& autoRefresh=60& signature=8e0d92b33934c928f6c6974e2f0102ace77f56d851cb0d33893e84c359ab1043
URL은 %7B%22imdb.rating%22%3A%20%7B%24gte%3A%208%7D%7D
의 인코딩된 filter
매개변수를 사용합니다. 디코딩된 이 필터는 다음과 같습니다.
{"imdb.rating": {$gte: 8}}
SDK로 임베딩된 Charts 에서 데이터 사전 필터링
preFilter
옵션을 사용하여 임베딩된 차트 에 사전 필터 를 추가할 수 있습니다. 사전 필터링을 사용하면 차트 작성자가 차트 뷰 후, 차트 쿼리 실행 및 차트 필터 전에 필터하다 를 실행 수 있습니다.
Embed Chart 모달에서 사전 필터에 포함할 필드를 지정해야 합니다. Embed Chart 모달에는 필터링을 허용할 수 있는 필드의 드롭다운 메뉴가 포함되어 있습니다.
다음은 preFilter
옵션을 사용하여 오스트레일리아의 문서만 나타냅니다.
createChart({ baseUrl: '<your-base-url>', chartId: '<your-chart-id>', width: 500, height: 500, preFilter: { "address.country": "Australia" } })
SDK로 임베딩된 Charts의 데이터 필터링
filter
옵션을 사용하여 임베딩된 차트 에 필터하다 를 추가할 수 있습니다. 필터링을 사용하면 차트 작성자가 지정된 MQL 필터하다 와 일치하는 포함된 차트 의 데이터만 표시할 수 있습니다.
Embed Chart 모달에서 필터하다 에 포함할 필드를 지정해야 합니다. Embed Chart 모달에는 필터링을 허용할 수 있는 필드의 드롭다운 메뉴가 포함되어 있습니다.
다음은 filter
옵션을 사용하여 total
필드가 100
보다 큰 문서만 나타냅니다.
createChart({ baseUrl: '<your-base-url>', chartId: '<your-chart-id>', width: 500, height: 500, filter: { "total": { "$gt": 100 } } })
사용자별 필터 삽입
Authenticated 액세스가 필요한 차트를 삽입하는 경우 Injected function 설정을 사용하여 차트를 보는 각 사용자에게 특정한 MongoDB 필터 문서를 삽입할 수 있습니다. 이 함수는 context.token
을(를) 통해 Embedding 인증 제공자의 토큰에 액세스할 수 있으며 토큰을 기반으로 차트 데이터를 필터링할 수 있습니다.
이 필터는 포함된 Atlas Charts의 뷰어가 자신의 데이터만 볼 수 있도록 하므로, 잠재적으로 민감한 정보가 포함된 Atlas Charts를 포함할 때 유용합니다.
참고
Atlas App Services 인증 제공자 를 사용하는 경우 context.token
에는 필터하다 할 App Services 사용자 객체 가 포함되어 있습니다. 예를 예시 App Services 사용자에 대해 사용자 지정 사용자 데이터 를 활성화 하면 context.token.custom_data
에서 사용자 객체 를 사용할 수 있습니다.
각 사용자에게 특정한 필터를 삽입하려면 Embed Chart 대화 상자의 Authenticated 탭에서 Injected function 설정을 On 로 설정합니다. 함수를 지정하고 Save 를 클릭합니다.
예시
다음 필터 함수는 문서의 ownerId
필드가 임베딩 인증 제공자의 토큰의 sub
필드 값과 일치하는 데이터만 렌더링합니다.
function getFilter(context) { return { ownerId: context.token.sub }; }