codeHub

MongoDB

MongoDB est une base de données NoSQL orientée documents, conçue pour la scalabilité et la flexibilité. Ce guide répertorie les commandes essentielles et les bonnes pratiques.

🚀 Commandes MongoDB Shell

CommandeDescription
mongoshDémarrer le shell MongoDB
mongosh "mongodb://localhost:27017"Se connecter avec une URI
show dbs ou show databasesLister toutes les bases de données
use nom_dbBasculer vers une base de données
dbAfficher la base de données courante
db.getName()Obtenir le nom de la base courante
exit ou quit()Quitter le shell MongoDB
clsEffacer l'écran
db.getMongo()Obtenir l'objet de connexion

Exploration des Collections

CommandeDescription
show collectionsLister toutes les collections
db.getCollectionNames()Lister les collections (format array)
db.collection.countDocuments()Compter les documents
db.collection.estimatedDocumentCount()Estimation rapide du nombre
db.collection.stats()Statistiques détaillées
db.collection.dataSize()Taille des données
db.collection.totalIndexSize()Taille des index
db.collection.getIndexes()Lister les index
db.stats()Statistiques de la base
db.serverStatus()État du serveur

Gestion des Utilisateurs

CommandeDescription
show usersLister les utilisateurs de la DB
show rolesLister les rôles disponibles
db.getUsers()Détails des utilisateurs
db.getRoles()Détails des rôles
db.currentOp()Opérations en cours
db.killOp(opid)Tuer une opération
db.version()Version de MongoDB
db.hostInfo()Informations sur l'hôte

Commandes d'Aide

CommandeDescription
helpAide générale
db.help()Aide sur les méthodes de base
db.collection.help()Aide sur les méthodes de collection
db.collection.find().help()Aide sur les curseurs
load("script.js")Charger un script JavaScript
print()Afficher dans la console
printjson()Afficher en format JSON
typeofType d'une variable

📊 Opérations CRUD

Insertion (Create)

// Insertion simple
db.users.insertOne({ name: "Jean", email: "jean@example.com", age: 30 });

// Insertion multiple
db.users.insertMany([
  { name: "Alice", email: "alice@example.com", tags: ["premium"] },
  { name: "Bob", email: "bob@example.com", age: 35 },
]);

// Bulk Insert pour performance
db.logs.bulkWrite([
  { insertOne: { document: { event: "login", timestamp: new Date() } } },
]);

Lecture (Read)

// Recherche basique
db.users.find({ age: { $gte: 25 } });
db.users.findOne({ email: "alice@example.com" });

// Opérateurs de requête
db.products.find({ $or: [{ price: { $lt: 100 } }, { category: "tech" }] });
db.users.find({ tags: { $all: ["premium", "active"] } });
db.users.find({ "address.city": "Paris" });

// Curseur et méthodes
db.users.find().sort({ age: -1 }).limit(10).skip(20);
db.users.countDocuments({ age: { $gte: 25 } });

Mise à jour (Update)

// UpdateOne/UpdateMany
db.users.updateOne(
  { email: "jean@example.com" },
  { $set: { age: 31, updatedAt: new Date() } }
);

// Opérateurs essentiels
db.products.updateOne({ name: "Laptop" }, { $inc: { stock: -1 } });
db.users.updateOne({ email: "alice@example.com" }, { $push: { tags: "vip" } });
db.users.updateOne(
  { email: "alice@example.com" },
  { $addToSet: { tags: "newsletter" } }
);

// Upsert
db.users.updateOne(
  { email: "new@example.com" },
  { $set: { name: "Nouveau User" } },
  { upsert: true }
);

Suppression (Delete)

// Suppression simple
db.users.deleteOne({ email: "test@example.com" });
db.users.deleteMany({ status: "inactive" });

// Suppression avec condition
db.logs.deleteMany({
  timestamp: { $lt: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000) },
});

// FindOneAndDelete
db.users.findOneAndDelete({ email: "old@example.com" });

📚 Ressources Utiles


Ce guide est un document vivant. N'hésitez pas à le compléter avec vos propres découvertes et cas d'usage !