Mongo / Mongoose: Does Mongoose automatically create indexes on ObjectId types?

javascript, mongodb, mongoose, mongoose-schema, node.js

Solution

In other words, does mongo automatically create indexes for ObjectId types ?

No, the only automatic index that MongoDB creates is for the `_id` field.

However, it depends on the type of queries you're going to run against your model if you need an index for `bar`.

Since `bar` refers to the `_id` field of documents in the `bars` collection, those documents themselves will be covered by the automatic `_id` index that will get created on that collection.

But if you need to be able to find documents in the "SomeEntity" collection that refer to a specific bar:

SomeEntity.find({ bar : someBarId })

...then you probably want to create an index for it:

bar: { type: Schema.ObjectId, ref: 'Bar', index : true }

Problem

I may have missed this in the mongo index documentation or in the mongoose documentation. Suppose I have a mongoose schema as such: ``` const SomeEntity = new Schema({ foo: { type: String, required: true }, bar { type: Schema.ObjectId, ref: 'Bar' } }); ``` Should I be creating an index on field `bar` or would mongo automatically address this? In other words, does mongo automatically create indexes for ObjectId types ?

Original source