Pour interagir avec MongoDB après son démarrage, ouvrez une nouvelle fenêtre de terminal et lancez la commande mongo. Vous pourrez alors exécuter différentes opérations.
Tapez help pour afficher les commandes de base :
show dbs: Liste toutes les bases de données.show collections: Affiche les collections de la base de données courante (équivalent des tables en SQL).show users: Affiche les utilisateurs enregistrés.use <nom_bd>: Sélectionne ou crée une base de données, similaire à son équivalent en MS-SQL.db.help(): Liste les commandes exploitables sur la base de données courante.db.maCollection.help(): Fournit l'aide spécifique à une collection (ici, une collection nommée "maCollection").db.maCollection.find(): Exécute une requête sans filtre sur la collection, retournant tous les documents.db.maCollection.find( { cle : valeur } ): Rechecrhe les documents où le champ "cle" correspond à la "valeur" spécifiée.
MongoDB ne possède pas de commande explicite CREATE DATABASE. Pour initialiser une base nommée "maBase", exécutez use maBase puis créez au moins une collection, par exemple avec db.createCollection('utilisateurs').
Commandes courantes pour la gestion des bases de données
Consulter l'aide
help
db.help()
db.maCollection.help()
db.maCollection.find().help()
rs.help()
Sélectionner ou créer une base de données
use maBase // Crée la base si elle n'existe pas à l'ajout d'une collection
Lister toutes les bases de données
show dbs
Supprimer la base de données active
db.dropDatabase()
Cloner une base depuis un hôte distant
db.cloneDatabase("hôte_distant")
Copier une base spécifique vers une autre base
db.copyDatabase("base_source", "base_destination", "hôte_source")
Réparer la base de données courante
db.repairDatabase()
Obtenir le nom de la base active
db.getName()
db // Équivalent à la commande précédente
État et informations de la base
db.stats() // Statistiques de la base
db.version() // Version de MongoDB
db.getMongo() // Adresse de connexion du serveur
Commnades pour les collections
Créer une collection avec des options
db.createCollection("nomCollection", {capped: true, size: 1048576, max: 10000})
Accéder à une collection spécifique
db.getCollection("nomCollection")
Lister toutes les collections de la base courante
db.getCollectionNames()
Renommer une collection
db.ancienNom.renameCollection("nouveauNom")
Supprimer une collection
db.maCollection.drop()
Obtenir des statistiques sur une collection
db.maCollection.stats()
db.maCollection.count() // Nombre de documents
db.maCollection.dataSize() // Taille des données
db.maCollection.storageSize() // Taille de stockage
db.maCollection.totalSize() // Taille totale (données + index)
db.maCollection.totalIndexSize() // Taille des index
db.maCollection.getDB() // Base de données parente
Gestion des utilisateurs
Ajouter un utilisateur
db.addUser("nomUtilisateur", "motDePasse", true) // Le troisième paramètre (true) pour un accès en lecture seule
Authentification
db.auth("nomUtilisateur", "motDePasse")
Lister les utilisateurs
show users
Supprimer un utilisateur
db.removeUser("nomUtilisateur")
Requêtes et opérations sur les données
Rechercher des documents
// Récupérer tous les documents
db.donnéesUtilisateur.find()
// Filtrer par égalité (âge = 25)
db.donnéesUtilisateur.find({ âge: 25 })
// Filtres de comparaison
db.donnéesUtilisateur.find({ âge: { $gt: 30 } }) // âge > 30
db.donnéesUtilisateur.find({ âge: { $lt: 30 } }) // âge < 30
db.donnéesUtilisateur.find({ âge: { $gte: 25 } }) // âge >= 25
db.donnéesUtilisateur.find({ âge: { $lte: 25 } }) // âge <= 25
db.donnéesUtilisateur.find({ âge: { $in: [25, 30] } })// âge dans [25, 30]
// Filtres sur les chaînes de caractères
db.donnéesUtilisateur.find({ nom: /.*mongo.*/ }) // Contient "mongo"
db.donnéesUtilisateur.find({ nom: /^mongo/ }) // Commence par "mongo"
// Projections (sélectionner des champs)
db.donnéesUtilisateur.find({}, { nom: 1, âge: 1, _id: 0 })
// Équivalent SQL : SELECT nom, âge FROM donnéesUtilisateur
// Combiner critères (ET logique)
db.donnéesUtilisateur.find({ âge: { $gt: 20 }, statut: "actif" })
// Critères OR
db.donnéesUtilisateur.find({ $or: [ { âge: { $lt: 25 } }, { ville: "Paris" } ] })
Trier, limiter et paginer les résultats
// Tri ascendant par âge
db.donnéesUtilisateur.find().sort({ âge: 1 })
// Tri descendant par âge
db.donnéesUtilisateur.find().sort({ âge: -1 })
// Limiter le nombre de résultats retournés
db.donnéesUtilisateur.find().limit(10)
// Sauter des résultats (pagination)
db.donnéesUtilisateur.find().skip(20).limit(10) // Résultats 21 à 30
// Utiliser un curseur
var curseur = db.donnéesUtilisateur.find();
while (curseur.hasNext()) {
printjson(curseur.next());
}
Insérer, modifier et supprimer des données
// Insertion
db.membres.save({ nom: "Nouveau", âge: 30, inscription: new Date() })
// Mise à jour d'un document
db.membres.update(
{ nom: "Ancien" },
{ $set: { statut: "inactif" }, $inc: { nombreConnexions: 1 } },
{ multi: false } // Met à jour un seul document
)
// Suppression de documents
db.membres.remove({ âge: { $lt: 18 } })
// Opération de mise à jour ou suppression avec FindAndModify
db.membres.findAndModify({
query: { ancienStatut: "attente" },
sort: { dateDemande: 1 },
update: { $set: { nouveauStatut: "traité" } },
remove: false,
new: true
})
Gestion des index
// Créer un index simple sur le champ 'nom'
db.employés.createIndex({ nom: 1 })
// Créer un index composé (tri descendant sur 'embauche')
db.employés.createIndex({ département: 1, dateEmbauche: -1 })
// Créer un index unique
db.employés.createIndex({ email: 1 }, { unique: true })
// Lister les index d'une collection
db.employés.getIndexes()
// Supprimer un index spécifique
db.employés.dropIndex("nom_1")
// Supprimer tous les index d'une collection
db.employés.dropIndexes()
Blocs de script et fonctions
// Définir et exécuter une fonction
function afficherRapport(collection) {
var total = db.getCollection(collection).count();
var actifs = db.getCollection(collection).find({ actif: true }).count();
print("Rapport pour " + collection + ": Total=" + total + ", Actifs=" + actifs);
}
afficherRapport("utilisateurs");
// Boucle pour insérer des données de test
for (let compteur = 0; compteur < 50; compteur++) {
db.produits.insertOne({
référence: "PROD-" + compteur,
prix: Math.floor(Math.random() * 1000),
catégorie: compteur % 2 === 0 ? "A" : "B"
});
}
// Traitement itératif avec forEach
db.produits.find({ catégorie: "A" }).forEach(function(doc) {
printjson(doc.référence + " - Prix: " + doc.prix);
});