Return Suggested Indexes

GET /api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/suggestedIndexes

Returns the indexes that the Performance Advisor suggests. The Performance Advisor monitors queries that MongoDB considers slow and suggests new indexes to improve query performance. To use this resource, the requesting API Key must have the Project Read Only role.

Path parameters

  • groupId string Required

    Unique 24-hexadecimal digit string that identifies your project. Use the /groups endpoint to retrieve all projects to which the authenticated user has access.

    NOTE: Groups and projects are synonymous terms. Your group id is the same as your project id. For existing groups, your group/project id remains the same. The resource and corresponding endpoints use the term groups.

    Minimum length is 24, maximum length is 24. Format should match the following pattern: ^([a-f0-9]{24})$.

  • processId string Required

    Combination of host and port that serves the MongoDB process. The host must be the hostname, FQDN, IPv4 address, or IPv6 address of the host that runs the MongoDB process (mongod or mongos). The port must be the IANA port on which the MongoDB process listens for requests.

    Format should match the following pattern: ^([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-f]{1,4}\:){7}([0-9a-f]{1,4})|(([a-z0-9]+\.){1,10}[a-z]+)?(\:[0-9]{4,5})$.

Query parameters

  • envelope boolean

    Flag that indicates whether Application wraps the response in an envelope JSON object. Some API clients cannot access the HTTP response headers or status code. To remediate this, set envelope=true in the query. Endpoints that return a list of results use the results object as an envelope. Application adds the status parameter to the response body.

    Default value is false.

  • includeCount boolean

    Flag that indicates whether the response returns the total number of items (totalCount) in the response.

    Default value is true.

  • itemsPerPage integer

    Number of items that the response returns per page.

    Minimum value is 1, maximum value is 500. Default value is 100.

  • pageNum integer

    Number of the page that displays the current set of the total objects that the response returns.

    Minimum value is 1. Default value is 1.

  • pretty boolean

    Flag that indicates whether the response body should be in the prettyprint format.

    Default value is false.

  • duration integer(int64)

    Length of time expressed during which the query finds suggested indexes among the managed namespaces in the cluster. This parameter expresses its value in milliseconds.

    • If you don't specify the since parameter, the endpoint returns data covering the duration before the current time.
    • If you specify neither the duration nor since parameters, the endpoint returns data from the previous 24 hours.
  • namespaces array[string]

    Namespaces from which to retrieve suggested indexes. A namespace consists of one database and one collection resource written as .: <database>.<collection>. To include multiple namespaces, pass the parameter multiple times delimited with an ampersand (&) between each namespace. Omit this parameter to return results for all namespaces.

  • nExamples integer(int64)

    Maximum number of example queries that benefit from the suggested index.

    Default value is 5.

  • nIndexes integer(int64)

    Number that indicates the maximum indexes to suggest.

  • since integer(int64)

    Date and time from which the query retrieves the suggested indexes. This parameter expresses its value in the number of milliseconds that have elapsed since the UNIX epoch.

    • If you don't specify the duration parameter, the endpoint returns data covering from the since value and the current time.
    • If you specify neither the duration nor the since parameters, the endpoint returns data from the previous 24 hours.

    Minimum value is 1199145600000.

Responses

  • 200 application/vnd.atlas.2023-01-01+json

    OK

    Hide response attributes Show response attributes object
    • shapes array[object]

      List of query predicates, sorts, and projections that the Performance Advisor suggests.

      Hide shapes attributes Show shapes attributes object
      • avgMs integer(int64)

        Average duration in milliseconds for the queries examined that match this shape.

      • count integer(int64)

        Number of queries examined that match this shape.

      • id string

        Unique 24-hexadecimal digit string that identifies this shape. This string exists only for the duration of this API request.

        Minimum length is 24, maximum length is 24. Format should match the following pattern: ^([a-f0-9]{24})$.

      • inefficiencyScore integer(int64)

        Average number of documents read for every document that the query returns.

        Understanding the Query Inefficiency Score
      • namespace string

        Human-readable label that identifies the namespace on the specified host. The resource expresses this parameter value as <database>.<collection>.

      • operations array[object]

        List that contains specific about individual queries.

        Hide operations attributes Show operations attributes object
        • predicates array[object]

          List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires Project Data Access Read Only permissions or greater. Otherwise, MongoDB Cloud redacts these values.

          List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires Project Data Access Read Only permissions or greater. Otherwise, MongoDB Cloud redacts these values.

          List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires Project Data Access Read Only permissions or greater. Otherwise, MongoDB Cloud redacts these values.

        • stats object

          Details that this resource returned about the specified query.

          Hide stats attributes Show stats attributes object
          • ms integer(int64)

            Length of time expressed during which the query finds suggested indexes among the managed namespaces in the cluster. This parameter expresses its value in milliseconds. This parameter relates to the duration query parameter.

          • nReturned integer(int64)

            Number of results that the query returns.

          • nScanned integer(int64)

            Number of documents that the query read.

          • ts integer(int64)

            Date and time from which the query retrieves the suggested indexes. This parameter expresses its value in the number of seconds that have elapsed since the UNIX epoch. This parameter relates to the since query parameter.

    • suggestedIndexes array[object]

      List that contains the documents with information about the indexes that the Performance Advisor suggests.

      Hide suggestedIndexes attributes Show suggestedIndexes attributes object
      • avgObjSize number(double)

        The average size of an object in the collection of this index.

      • id string

        Unique 24-hexadecimal digit string that identifies this index.

        Minimum length is 24, maximum length is 24. Format should match the following pattern: ^([a-f0-9]{24})$.

      • impact array[string]

        List that contains unique 24-hexadecimal character string that identifies the query shapes in this response that the Performance Advisor suggests.

        Minimum length of each is 24, maximum length of each is 24. Format of each should match the following pattern: ^([a-f0-9]{24})$.

      • index array[object]

        List that contains documents that specify a key in the index and its sort order.

        One index key paired with its sort order. A value of 1 indicates an ascending sort order. A value of -1 indicates a descending sort order. Keys in indexes with multiple keys appear in the same order that they appear in the index.

        Hide index attribute Show index attribute object
        • * integer(int32) Additional properties

          One index key paired with its sort order. A value of 1 indicates an ascending sort order. A value of -1 indicates a descending sort order. Keys in indexes with multiple keys appear in the same order that they appear in the index.

          Values are 1 or -1.

      • namespace string

        Human-readable label that identifies the namespace on the specified host. The resource expresses this parameter value as <database>.<collection>.

      • weight number(double)

        Estimated performance improvement that the suggested index provides. This value corresponds to Impact in the Performance Advisor user interface.

  • 401 application/json

    Unauthorized.

    Hide response attributes Show response attributes object
    • detail string

      Describes the specific conditions or reasons that cause each type of error.

    • error integer(int32)

      HTTP status code returned with this error.

      External documentation
    • errorCode string

      Application error code returned with this error.

    • parameters array[object]

      Parameters used to give more information about the error.

    • reason string

      Application error message returned with this error.

  • 500 application/json

    Internal Server Error.

    Hide response attributes Show response attributes object
    • detail string

      Describes the specific conditions or reasons that cause each type of error.

    • error integer(int32)

      HTTP status code returned with this error.

      External documentation
    • errorCode string

      Application error code returned with this error.

    • parameters array[object]

      Parameters used to give more information about the error.

    • reason string

      Application error message returned with this error.

GET /api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/suggestedIndexes
atlas api performanceAdvisor listSuggestedIndexes --help
import (
	"os"
	"context"
	"log"
	sdk "go.mongodb.org/atlas-sdk/v20230101001/admin"
)

func main() {
	ctx := context.Background()
	clientID := os.Getenv("MONGODB_ATLAS_CLIENT_ID")
	clientSecret := os.Getenv("MONGODB_ATLAS_CLIENT_SECRET")

	// See https://dochub.mongodb.org/core/atlas-go-sdk-oauth
	client, err := sdk.NewClient(sdk.UseOAuthAuth(clientID, clientSecret))

	if err != nil {
		log.Fatalf("Error: %v", err)
	}

	params = &sdk.ListSuggestedIndexesApiParams{}
	sdkResp, httpResp, err := client.PerformanceAdvisorApi.
		ListSuggestedIndexesWithParams(ctx, params).
		Execute()
}
curl --include --header "Authorization: Bearer ${ACCESS_TOKEN}" \
  --header "Accept: application/vnd.atlas.2023-01-01+json" \
  -X GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/suggestedIndexes?pretty=true"
curl --user "${PUBLIC_KEY}:${PRIVATE_KEY}" \
  --digest --include \
  --header "Accept: application/vnd.atlas.2023-01-01+json" \
  -X GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/suggestedIndexes?pretty=true"
Response examples (200)
{
  "shapes": [
    {
      "avgMs": 42,
      "count": 42,
      "id": "string",
      "inefficiencyScore": 42,
      "namespace": "string",
      "operations": [
        {
          "predicates": [
            {}
          ],
          "stats": {
            "ms": 42,
            "nReturned": 42,
            "nScanned": 42,
            "ts": 42
          }
        }
      ]
    }
  ],
  "suggestedIndexes": [
    {
      "avgObjSize": 42.0,
      "id": "string",
      "impact": [
        "string"
      ],
      "index": [
        {
          "additionalProperty1": 1,
          "additionalProperty2": 1
        }
      ],
      "namespace": "string",
      "weight": 42.0
    }
  ]
}
Response examples (401)
{
  "error": 401,
  "detail": "(This is just an example, the exception may not be related to this endpoint)",
  "reason": "Unauthorized",
  "errorCode": "NOT_ORG_GROUP_CREATOR"
}
Response examples (500)
{
  "error": 500,
  "detail": "(This is just an example, the exception may not be related to this endpoint)",
  "reason": "Internal Server Error",
  "errorCode": "UNEXPECTED_ERROR"
}