How to Create a nested index in MongoDB?

A. How do I index nested and all of it's values?

B. How do I index valuetwo?

{
    id: 00000,
    attrs: {
        nested:{
            value: value1,
            valuetwo: value2,
        }
    }
}

I've looked here: http://www.mongodb.org/display/DOCS/Indexes, and the docs to my knowledge, aren't clear about indexing things that aren't nested.


Solution 1:

You'd create them just as if you were creating an index on a top level field:

db.collection.createIndex({"attrs.nested.value": 1})

You do need to explicitly create indexes on each field.

Solution 2:

A. to index all the properties in "nested" you will have to index them separately:

db.collection.createIndex({"attrs.nested.value": 1});
db.collection.createIndex({"attrs.nested.valuetwo": 1});

This can be done in one command with:

db.collection.createIndexes([{"attrs.nested.value": 1}, {"attrs.nested.valuetwo": 1}]);

B. to index just "valuetwo":

db.collection.createIndex({"attrs.nested.valuetwo": 1})

Use createIndex over ensureIndex as ensureIndex is Deprecated since version 3.0.0