// Index composé pour les requêtes fréquentes
db.users.createIndex({
email: 1,
status: 1
})
// Index pour tri
db.products.createIndex({
category: 1,
created_at: -1
})
// Index texte pour recherche
db.articles.createIndex({
title: "text",
content: "text"
}, {
weights: {
title: 2,
content: 1
}
})
db.collection.aggregate([
{ $indexStats: {} }
])
// Projection pour limiter les données
db.users.find(
{ status: "active" },
{ name: 1, email: 1 }
)
// Pagination avec limit/skip
db.posts.find()
.sort({ created_at: -1 })
.skip(20)
.limit(10)
// Utiliser explain() pour analyser
db.orders.find({
status: "pending"
}).explain("executionStats")
// Taille du working set
db.stats()
// Statistiques de la collection
db.collection.stats()
// Conseils de performance
mongosh --eval "
db.users.find().hint({ email: 1 })
db.orders.find().allowDiskUse()
"
// Créer un utilisateur avec rôles
db.createUser({
user: "appUser",
pwd: "secure_password",
roles: [
{ role: "readWrite", db: "myapp" },
{ role: "read", db: "reporting" }
]
})
// Activer l'authentification
mongod --auth
// Encryption at rest
mongod --enableEncryption \
--encryptionKeyFile key.file
// Champs sensibles
db.users.insertOne({
name: "John",
ssn: new Binary(encryptData("123-45-6789"),
ENCRYPTION_DETERMINISTIC)
})
mongodump --db myapp --out /backup/
mongorestore --db myapp /backup/myapp/
// Opérations en cours
db.currentOp()
// Statistiques serveur
db.serverStatus()
// Métriques de performance
db.getProfilingStatus()
// Compactage et réparation
db.repairDatabase()
// Défragmentation
db.runCommand({ compact: "collection" })