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 ?
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 ?
Share Improve this question asked Apr 28, 2017 at 15:03 dipole_momentdipole_moment 5,8644 gold badges42 silver badges56 bronze badges 01 Answer
Reset to default 16In 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 }