MongoDB – Multikey Indexes
In MongoDB we can have a key that holds an array like
{interests: ["swimming", "reading", "programming"]}, {"sports":["tennis","gym"]}
We can have an index on interests key. like (suppose we have a people collection and interests field in it)
db.people.ensureIndex({"interests":1});
MongoDB will create an index for every item in the array like for swimming, reading, programming. If we do a query to find swimming the it will be fast because it is able to use index and is in array called multikey index.
We can create a compound index from say two fields like {interests, color}. That works fine but MongoDB will restrict if both keys are arrays an index is a multikey index. While inserting in to these field MongoDB will not allow us to insert.
suppose we insert a document into a collection.
db.foo.insert({a:1, b:1});
We can create an index like db.foo.ensureIndex({a:1, b:1}); . This will work just fine. If we insert like
db.foo.ensureIndex({a:1, b:[1,2,3]});
or
db.foo.ensureIndex({a:[1, 2, 3], b:1});
. It will work as expected but if we insert both fields as an array
db.foo.ensureIndex({a:1, b:[1,2,3]});
Db will not allow us and we will get an error saying. “Cannot index parallel arrays b[] a[]”