GaddBox
GaddBox

Reputation: 412

Node Mongoose Seperate Indexes for Seperate Queries

Can we create completely separate indexes for completely separate queries on the same collection?

I want an efficient query for users retrieving their activities using an index like so

index{ userDBID: 1 }

Example query

ActivityModel.find({ userDBID }).lean();

I want a separate efficient query for entire app statistics which gets activities also, but needs use a separate compound index like so

index{season: 1, matchID: 1}

Example queries

ActivityModel.find({ season, matchID }).lean()
ActivityModel.find({ season }).lean();

I am finding it hard to find a solid high-quality answer. I know hint() seems to be a solution, but I am sceptical about that one.

Daniel

Upvotes: 2

Views: 44

Answers (1)

Mattia Rasulo
Mattia Rasulo

Reputation: 1480

Of course you can.

You can just add:

schema.index({ userDBID: 1 });
schema.index({ season: 1, matchID: 1 });

right after your schema declaration, before saving the Model with mongoose.model('Model', schema);.

You will see (after a while) the new schema added in the DB. If you use an inspection tool like MongoDB Compass you'll even have a visual representation.

I am using this efficiently in a production app so I am certain of this (just today's usage):

http://prntscr.com/qj1n2o

Upvotes: 2

Related Questions