MongoDB Documentation, Release 3.0.4 db.inventory.createIndex( { type: 1, item: 1 } ) This index will cover the following operation which queries on the type and item fields and returns only the item field: For the specified index to cover the query, the projection document must explicitly specify _id: 0 to exclude the _id field from the result since the index does not include the _id field. Performance Because the index contains all fields required by the query, MongoDB can both match the query conditions (page 96) and return the results using only the index. Querying only the index can be much faster than querying documents outside of the index. Index keys are typically smaller than the documents they catalog, and indexes are typically available in RAM or located sequentially on disk. Restrictions on Indexed Fields An index cannot cover a query if: { _id: 1, user: { login: "tester" } } The collection has the following index: { "user.login": 1 } The { "user.login": 1 } index does not cover the following query: db.users.find( { "user.login": "tester" }, { "user.login": 1, _id: 0 } ) However, the query can use the { "user.login": 1 } index to find matching documents. Restrictions on Sharded Collection An index cannot cover a query on a sharded collection when run against a mongos if the index does not contain the shard key, with the following exception for the _id index: If a query on a sharded collection only specifies a condition on the _id field and returns only the _id field, the _id index can cover the query when run against a mongos even if the _id field is not the shard key. Changed in version 3.0: In previous versions, an index cannot cover (page 66) a query on a sharded collection when run against a mongos . explain To determine whether a query is a covered query, use the db.collection.explain() or the explain() method and review the results . db.collection.explain() provides information on the execution of other operations, such as db.collection.update() . See db.collection.explain() for details. 3 To index fields in embedded documents, use dot notation . 67 3.2. MongoDB CRUD Concepts • any of the indexed fields in any of the documents in the collection includes an array. If an indexed field is an array, the index becomes a multi-key index (page 491) and cannot support a covered query. • any of the indexed field in the query predicate or returned in the projection are fields in embedded documents. 3 For example, consider a collection users with documents of the following form: Limitations db.inventory.find( { type: "food", item:/^c/ }, { item: 1, _id: 0 } )