Maîtrise de MongoDB 5.X : Installation et Opérations Fondamentales

Installation de MongoDB 5.X

Pour installer MongoDB 5.X, téléchargez la version communautaire depuis le site officiel de MongoDB.

Lien de téléchargement : https://www.mongodb.com/try/download/community

Après avoir transféré l'archive sur un système CentOS 7, suivez ces étapes :

Extraire l'archive : tar -zxvf mongodb-linux-x86_64-5.0.0.tgz
Accéder au répertoire extrait : cd mongodb5/
Créer un répertoire pour le serveur : mkdir serveur_mongo
À l'intérieur de serveur_mongo, créer les sous-répertoires : mkdir data logs config
Dans le répertoire config, créer un fichier de configuration : vi mongo.conf
Contenu du fichier mongo.conf :
dbpath=/chemin/absolu/vers/serveur_mongo/data
logpath=/chemin/absolu/vers/serveur_mongo/logs/mongo.log
port=27017
bind_ip=0.0.0.0
Lancer le serveur depuis le répertoire bin : ./mongod --config ../serveur_mongo/config/mongo.conf
Se connecter au client : ./mongo --port=27017
Afficher les bases de données par défaut : show dbs

Pour exécuter le serveur en arrière-plan :

nohup ./mongod --config ../serveur_mongo/config/mongo.conf &

Consultez la documentation officielle pour plus de détails : Documentation MongoDB.

MongoDB stocke les données au format BSON, une extension binaire de JSON, et est une base de données non relationnelle orientée document.

Concepts Clés

Base de Données

Similaire aux bases de données dans les systèmes relationnels comme MySQL.

Collection

Équivalente à une table, elle contient des documents.

Document

Représente un enregistrement individuel, structuré en JSON (BSON).

Opérations de Base

Gestion des Bases de Données

Lister toutes les bases de données :

show databases;

Créer ou basculer vers une base de données :

use nom_base;

Afficher la base de données actuelle :

db;

Supprimer la base de données courante (suppression logique) :

db.dropDatabase();

Gestion des Collections

Accéder à une base de données, par exemple :

use entreprise;

Afficher les collections :

show tables;
ou
show collections;

Créer une collection :

db.createCollection('employes');

Supprimer une collection :

db.employes.drop();

Manipulation des Documents

Insérer un document unique (les clés peuvent ne pas être entre guillemets) :

db.employes.insert({"nom":"Dupont", age:30, poste:"Ingénieur"})

L'insertion par script supporte la syntaxe JavaScript moderne.

Lire tous les documents :

db.employes.find();

Supprimer des documents :

db.employes.remove(
  {
    <critere>,
    justOne: <booléen>,
    writeConcern: <document>
  }
);
Pour supprimer tous les documents : db.employes.remove({})

Mettre à jour des documents (avec $set pour une mise à jour partielle) :

db.employes.update(
  {
    <critere>,
    <mise_à_jour>,
    {
      upsert: <booléen>,
      multi: <booléen>,
      writeConcern: <document>
    }
  }
);

Requête de documents avec formatage :

db.employes.find(critere, projection).pretty()

Conditions de requête : inférieur à ($lt), égalité, ou opérateur logique $or.

Requête floue avec expressions régulières.

Utilisation de $size pour filtrer par longueur de tableau.

Indexation

Créer un index simple :

db.employes.createIndex({nom: 1});

Lister les index :

db.employes.getIndexes();

Index composé : basé sur plusieurs clés.

Agrégation

Traiter des données avec des opérations comme la moyenne ou la somme :

db.employes.aggregate([
  {
    $group: {
      _id: "$departement",
      total_salaires: { $sum: "$salaire" }
    }
  }
])

Connexion avec Navicat

Par défaut, l'installation trdaitionnelle ne permet pas les connexions distantes ; l'image Docker les active.

Assurez-vous que la configuration inclut :

bind_ip=0.0.0.0

Intégration avec Spring Boot via Spring Data

Ajoutez la dépendance dans votre projet :

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

Configuerz l'application :

spring:
  data:
    mongodb:
      database: ma_base
      host: adresse_ip
      port: 27017

Exemples d'utilisation de MongoTemplate pour les collections et documents :

Opérations sur les Collections

@Autowired
private MongoTemplate mongoTemplate;

@Test
public void testCreerCollection() {
    mongoTemplate.createCollection("produits");
}

@Test
public void testSupprimerCollection() {
    mongoTemplate.dropCollection("produits");
}

Annotations utiles :

  • @Document("utilisateurs") : mappe une classe vers une collection.
  • @Id : mappe un champ vers l'_id du document.
  • @Field("nom_utilisateur") : spécifie le nom de la clé dans le document.
  • @Transient : exclut un champ de la sérialisation.

Opérations sur les Documents

Insertion de données :

mongoTemplate.insert(utilisateur); // Lance une erreur si le document existe déjà
mongoTemplate.save(utilisateur);   // Met à jour ou insère un document unique

Requêtes variées :

List<Utilisateur> tous = mongoTemplate.findAll(Utilisateur.class);
Utilisateur parId = mongoTemplate.findById(1, Utilisateur.class);
List<Utilisateur> filtre = mongoTemplate.find(
    Query.query(Criteria.where("salaire").lt(23000)),
    Utilisateur.class
);
Critères combinés avec and ou or pour des requêtes complexes.

Tri des résultats :

Query requeteTri = new Query();
requeteTri.with(Sort.by(Sort.Order.asc("salaire")));
List<Utilisateur> tries = mongoTemplate.find(requeteTri, Utilisateur.class);

Pagination :

requeteTri.skip(0).limit(10);

Compter les documents :

long nombre = mongoTemplate.count(new Query(), Utilisateur.class);

Valeurs distinctes :

List<String> nomsDistincts = mongoTemplate.findDistinct(
    new Query(), "nom", Utilisateur.class, String.class
);

Étiquettes: MongoDB NoSQL Spring Data MongoDB JSON BSON

Publié le 1 juin à 22h32