Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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 ?

like image 925
dipole_moment Avatar asked Apr 28 '17 15:04

dipole_moment


1 Answers

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 }
like image 117
robertklep Avatar answered Oct 12 '22 16:10

robertklep