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