Commandes MongoDB fondamentales pour l'administration de bases de données

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);
});

Étiquettes: MongoDB base de données NoSQL requêtes MongoDB gestion de bases de données index MongoDB

Publié le 15 juin à 16h26