MongoDB Indexes

Creating and managing indexes

Create Index

db.users.createIndex({ email: 1 }); # ascending index
db.users.createIndex({ age: -1 }); # descending index

Compound Index

db.users.createIndex({ country: 1, city: 1 }); # multi-field index

Unique Index

db.users.createIndex(
    { email: 1 },
    { unique: true }
); # unique constraint

Text Index

db.articles.createIndex({ content: 'text' }); # full-text search
db.articles.find({ $text: { $search: 'mongodb' } }); # search text

Partial Index

db.users.createIndex(
    { email: 1 },
    { partialFilterExpression: { age: { $gte: 18 } } }
); # index subset

TTL Index

db.sessions.createIndex(
    { createdAt: 1 },
    { expireAfterSeconds: 3600 }
); # auto-delete after 1 hour

Manage Indexes

db.users.getIndexes(); # list indexes
db.users.dropIndex('email_1'); # drop specific index
db.users.dropIndexes(); # drop all indexes (except _id)