Docs Menu

Get Suggested Indexes

On this page

  • Resource
  • Request Path Parameters
  • Request Query Parameters
  • Request Body Parameters
  • Response
  • Example Request
  • Example Response

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 Administration API authenticates using HTTP Digest Authentication. Provide a programmatic API public key and corresponding private key as the username and password when constructing the HTTP request. To learn how to configure API access for an Atlas project, see Get Started with the Atlas Administration API.

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

GET /groups/{GROUP-ID}/processes/{PROCESS-ID}/performanceAdvisor/suggestedIndexes
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.
Name
Type
Necessity
Description
Default
pretty
boolean
Optional
Flag indicating whether the response body should be in a prettyprint format.
false
envelope
boolean
Optional

Flag indicating if Atlas should wrap the response in a JSON envelope.

This option may be needed for some API clients. These clients cannot access the HTTP response headers or status code. To remediate this, set envelope=true in the query.

For endpoints that return one result, the response body includes:

status
HTTP response code
envelope
Expected response body
false
since
number
Optional
Timestamp in the number of seconds that have elapsed since the UNIX epoch from which to retrieve suggested indexes.
duration
number
Optional
Length of time in milliseconds during which to find suggested indexes among the managed namespaces in the cluster.
namespaces
string
Optional

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
number
Optional
Maximum number of indexes to suggest.
Unlimited
nExamples
number
Optional
Maximum number of examples queries to provide that will be improved by a suggested index.
5
Note
  • If you specify since and omit duration, the response contains results from the since point up to and including the present time.
  • If you specify duration and omit since, the response contains results from duration ms ago up to and including the present time.
  • If you omit both since and duration, the response contains results from the previous 24 hours up up to and including the present time.

This endpoint does not use HTTP request body parameters.

Name
Type
Description
shapes
array of documents
Documents with information about the query shapes that are served by the suggested indexes.
shapes[n].avgMs
number
Average duration in milliseconds for the queries examined that match this shape.
shapes[n].count
number
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
number
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
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
Raw log line produced by the query.
shapes[n].operations[n].stats
document
Query statistics.
shapes[n].operations[n].stats.ms
number
Duration in milliseconds of the query.
shapes[n].operations[n].stats.nReturned
number
Number of results returned by the query.
shapes[n].stats.nScanned
number
Number of documents read by the query.
shapes[n].stats.ts
number
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

List of unique identifers which correspond the query shapes in this response which pertain to this suggested index.

Note

This field does not correspond to Impact in the Performance Advisor user interface.

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
Specific field to be indexed.
suggestedIndexes[n].namespace
string
Namespace of the suggested index.
suggestedIndexes[n].weight
number
Estimated percentage performance improvement in decimal form that the suggested index would provide. Corresponds to Impact in the Performance Advisor user interface.
suggestedIndexes[n].dismissedFromAutoCreation
boolean
Indicates whether this index suggestion was manually dismissed from auto-creation. This field is only present when the value is true.
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest -i \
--header "Accept: 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"
{
"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",
"weight" : 0.372204809018156
}, {
"id" : "5b74689a80eef53f33888980",
"impact" : [ "5b74689a80eef53f3388897d" ],
"index" : [ {
"email" : 1
} ],
"namespace" : "test.inventory",
"weight" : 0.190375783099664
} ]
}
←  Get Slow QueriesEnable Managed Slow Operation Threshold →
Give Feedback
© 2022 MongoDB, Inc.

About

  • Careers
  • Investor Relations
  • Legal Notices
  • Privacy Notices
  • Security Information
  • Trust Center
© 2022 MongoDB, Inc.