Navigation

Get Suggested Indexes

Retrieves any suggested indexes generated by the Atlas Performance Advisor.

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.

The Atlas API uses HTTP Digest Authentication. Provide your Atlas username and API key as the username and password when constructing the HTTP request.

For complete documentation on configuring API access for an Atlas project, see Configure Atlas API Access.

Base URL: https://cloud.mongodb.com/api/atlas/v1.0

Resource

GET /groups/{GROUP-ID}/processes/{PROCESS-ID}/performanceAdvisor/suggestedIndexes

Request Path Parameters

Path Element Description
GROUP-ID Unique identifier for the project.
PROCESS-ID The Atlas hostname and port, e.g. m10-shard-00-00-17jcm.mongodb.net:27017. To retrieve all processes in the project with a given GROUP-ID, use the /groups/{GROUP-ID}/processes endpoint.

Request Query Parameters

All parameters are optional.

Path Element Type Description
since long Point in time from which to retrieve suggested indexes, stated in milliseconds since epoch.
duration long Length of time in milliseconds during which to find suggested indexes among the managed namespaces in the cluster.
namespaces string

Namespaces from which to retrieve suggested indexes. A namespace consists of the database and collection resource separated by a ., such as <database>.<collection>.

To specify multiple namespaces, pass the parameter multiple times using an ampersand (&) as a delimiter, once for each namespace.

Example

?namespaces=data.stocks&namespaces=data.zips&pretty=true

Omit to return results for all namespaces.

nIndexes long Maximum number of indexes to suggest. Defaults to unlimited.
nExamples long Maximum number of examples queries to provide that will be improved by a suggested index. Defaults to 5.
pretty boolean Display response in a prettyprint format. Defaults to false.
envelope boolean Specifies whether or not to wrap the response in an envelope. Defaults to false.

Note

If since is indicated and duration is omitted, the response contains results from the since point up to the present time.

If duration is indicated and since is omitted, the response contains results from duration ms ago through the present time.

If both since and duration are omitted, the response contains results from the previous 24 hours up through the present time.

Request Body Parameters

This endpoint does not use HTTP request body parameters.

Response

Name Type Description
shapes array of documents Documents with information about the query shapes that are served by the suggested indexes.
shapes[n].avgMs long Average duration in milliseconds for the queries examined that match this shape.
shapes[n].count long The number of queries examined that match this shape.
shapes[n].id objectId Unique id for this shape. Exists only for the duration of the API request.
shapes[n].inefficiencyScore long The average number of documents read for every document returned by the query. For more information, see Understanding the Query Inefficiency Score.
shapes[n].namespace string The namespace searched by the queries in this shape.
shapes[n].operations array of documents Documents with specific information and log lines for individual queries.
shapes[n].operations[n].predicates array of documents Documents containing the search criteria used by the query. Values in key-value pairs will be redacted in these predicates unless the user has Project Data Access Read Only permissions or higher.
shapes[n].operations[n].raw string The raw log line produced by the query.
shapes[n].operations[n].stats document Query statistics.
shapes[n].operations[n].stats.ms long Duration in milliseconds of the query.
shapes[n].operations[n].stats.nReturned long Number of results returned by the query.
shapes[n].stats.nScanned long Number of documents read by the query.
shapes[n].stats.ts long Query timestamp, in seconds since epoch.
suggestedIndexes array of documents Documents with information about the indexes suggested by the Performance Advisor.
suggestedIndexes[n].id objectId Unique id for this suggested index.
suggestedIndexes[n].impact array of objectIds A list of objectIds which identify the shapes in this response which pertain to this suggested index.
suggestedIndexes[n].index array of documents

Each array element is a document that specifies a key in the index and its sort order, ascending or descending.

  • 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.

suggestedIndexes[n].index.<fieldname> string The specific field to be indexed.
suggestedIndexes[n].namespace string The namespace of the suggested index.

Example Request

curl --user "{username:apiKey}" --digest -i \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --request GET "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/processes/{PROCESS-ID}/performanceAdvisor/suggestedIndexes?namespaces=test.users&namespaces=test.inventory&pretty=true"

Example Response

{
  "shapes" : [ {
    "avgMs" : 42,
    "count" : 2,
    "id" : "5b74689a80eef53f3388897e",
    "inefficiencyScore" : 50000,
    "namespace" : "test.users",
    "operations" : [ {
      "predicates" : [{ "find" : { "emails" : "la@sa.kp" } }],
      "raw" : "2018-08-15T17:14:11.115+0000 I COMMAND  [conn4576] command test.users appName: \"MongoDB Shell\" command: find { find: \"users\", filter: { emails: \"la@sa.kp\" }, lsid: { id: UUID(\"1a4e71d3-9b67-4e9c-b078-9fdf3fae9091\") }, $clusterTime: { clusterTime: Timestamp(1534353241, 1), signature: { hash: BinData(0, AB91938B7CF7BC87994A2909A98D87F29101EFA0), keyId: 6589681559618453505 } }, $db: \"test\" } planSummary: COLLSCAN keysExamined:0 docsExamined:50000 cursorExhausted:1 numYields:391 nreturned:1 reslen:339 locks:{ Global: { acquireCount: { r: 784 } }, Database: { acquireCount: { r: 392 } }, Collection: { acquireCount: { r: 392 } } } protocol:op_msg 34ms",
      "stats" : {
        "ms" : 34,
        "nReturned" : 1,
        "nScanned" : 50000,
        "ts" : 1534353251147
      }
    }, {
      "predicates" : [{ "find" : { "emails" : "tocde@fijoow.to" } }],
      "raw" : "2018-08-15T17:14:18.665+0000 I COMMAND  [conn4576] command test.users appName: \"MongoDB Shell\" command: find { find: \"users\", filter: { emails: \"tocde@fijoow.to\" }, lsid: { id: UUID(\"1a4e71d3-9b67-4e9c-b078-9fdf3fae9091\") }, $clusterTime: { clusterTime: Timestamp(1534353241, 1), signature: { hash: BinData(0, AB91938B7CF7BC87994A2909A98D87F29101EFA0), keyId: 6589681559618453505 } }, $db: \"test\" } planSummary: COLLSCAN keysExamined:0 docsExamined:50000 cursorExhausted:1 numYields:390 nreturned:1 reslen:342 locks:{ Global: { acquireCount: { r: 782 } }, Database: { acquireCount: { r: 391 } }, Collection: { acquireCount: { r: 391 } } } protocol:op_msg 36ms",
      "stats" : {
        "ms" : 36,
        "nReturned" : 1,
        "nScanned" : 50000,
        "ts" : 1534353258697
      }
    } ]
  } ],
  "suggestedIndexes" : [ {
    "id" : "5b74689a80eef53f3388897f",
    "impact" : [ "5b74689a80eef53f3388897e" ],
    "index" : [ {
      "emails" : 1
    } ],
    "namespace" : "test.users"
  }, {
    "id" : "5b74689a80eef53f33888980",
    "impact" : [ "5b74689a80eef53f3388897d" ],
    "index" : [ {
      "email" : 1
    } ],
    "namespace" : "test.users"
  } ]
}
←   Get Slow Queries Auditing  →