Introduction aux commandes fondamentales de MongoDB

Pour interagir avec MongoDB après son démarrage, ouvrez une session shell via la commande mongo. La commende help affiche les instructions de base.

Commandes utiles initialse :

  • show dbs : liste les bases de données disponibles.
  • show collections : présente les collections de la base courante.
  • use <nom_bd> : change ou crée la base active.

L'exécution d'une opération telle que db.createCollection('users') sur une base non existante la générera automatiquement.

Gestion des bases de données

Commandes essentielles pour la manipulation des bases :


// Afficher l'aide contextuelle
db.help();
db.maCollection.help();

// Créer ou basculer vers une base
use maNouvelleBD;

// Supprimer la base en cours
db.dropDatabase();

// Cloner depuis un hôte distant
db.cloneDatabase("192.168.1.100");

// Copier une base entre instances
db.copyDatabase("source", "destination", "localhost");

// Obtenir des informations sur l'état
db.stats();
db.version();
db.getMongo();

Opérations sur les collections

Les collections équivalent aux tables dans les systèmes relationnels.


// Créer une collection avec des options
db.createCollection("logs", { capped: true, size: 1048576 });

// Récupérer une collection spécifique
db.getCollection("commandes");

// Lister toutes les collections
db.getCollectionNames();

// Renommer une collection
db.produits.renameCollection("articles");

// Supprimer une collection
db.articles.drop();

Administration des utilisateurs


// Ajouter un utilisateur avec mot de passe et droits limités
db.addUser("consultant", "motDePasse", true);

// Authentification
db.auth("consultant", "motDePasse");

// Lister les utilisateurs
show users;

// Supprimer un utilisateur
db.removeUser("consultant");

Requêtes et filtrage des données

Exemples d'interrogations avancées sur la collection employes :


// Trouver tous les documents
db.employes.find();

// Documents avec un salaire exact
db.employes.find({ salaire: 50000 });

// Recherche avec opérateurs de comparaison
db.employes.find({ salaire: { $gt: 40000 } });
db.employes.find({ age: { $lte: 30 } });

// Combinaison de conditions
db.employes.find({ departement: "IT", experience: { $gte: 5 } });

// Recherche par motif
db.employes.find({ nom: /dupont/i });

// Projection de champs spécifiques
db.employes.find({ actif: true }, { nom: 1, prenom: 1, _id: 0 });

// Tri et limitation
db.employes.find().sort({ salaire: -1 }).limit(10).skip(5);

// Agrégation simple avec distinct
db.employes.distinct("departement");

// Compter les résultats
db.employes.find({ age: { $gt: 25 } }).count();

Indexation pour l'optimisation


// Créer un index ascendant
db.employes.createIndex({ nom: 1 });

// Index composé
db.employes.createIndex({ departement: 1, salaire: -1 });

// Index unique
db.employes.createIndex({ email: 1 }, { unique: true });

// Index avec suppression des doublons
db.employes.createIndex({ matricule: 1 }, { unique: true, dropDups: true });

// Lister les index existants
db.employes.getIndexes();

// Supprimer un index spécifique
db.employes.dropIndex("nom_1");

// Taille totale des index
db.employes.totalIndexSize();

Modificaiton des documents


// Insérer un document
db.employes.insert({ nom: "Martin", prenom: "Sophie", salaire: 45000 });

// Mettre à jour avec un setter
db.employes.update({ nom: "Martin" }, { $set: { salaire: 48000 } });

// Incrémenter une valeur
db.employes.update({ nom: "Martin" }, { $inc: { experience: 1 } });

// Mise à jour multi-champs
db.employes.update(
  { nom: "Durand" },
  { $set: { departement: "RH" }, $inc: { salaire: 5000 } }
);

// Supprimer des documents
db.employes.remove({ actif: false });

// Opération atomique findAndModify
db.employes.findAndModify({
  query: { experience: { $gt: 10 } },
  sort: { salaire: -1 },
  update: { $set: { statut: "senior" } },
  new: true
});

Scripts et opérations par lots


// Boucle d'insertion
for (let i = 0; i < 100; i++) {
  db.testData.insert({ index: i, valeur: Math.random() });
}

// Traitement avec curseur
const cursor = db.employes.find({ actif: true });
while (cursor.hasNext()) {
  const doc = cursor.next();
  printjson(doc);
}

// Conversion en tableau pour traitement
const tableau = db.employes.find().toArray();
printjson(tableau[0]);

// Application de forEach
db.employes.find({ departement: "IT" }).forEach(function(employe) {
  print(`${employe.nom} : ${employe.salaire}`);
});

Étiquettes: MongoDB NoSQL Database Commands Shell crud

Publié le 15 juillet à 11h00