0% ont trouvé ce document utile (0 vote)
4 vues3 pages

Atelier Java2

Ce document fournit des exemples de code pour se connecter à MongoDB en Java et effectuer diverses requêtes MQL. Les opérations incluent l'affichage de documents, le filtrage, la mise à jour de champs, la suppression de champs vides, et l'agrégation des données. Il montre également comment stocker des résultats dans une nouvelle collection.

Transféré par

michaelboroz81
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues3 pages

Atelier Java2

Ce document fournit des exemples de code pour se connecter à MongoDB en Java et effectuer diverses requêtes MQL. Les opérations incluent l'affichage de documents, le filtrage, la mise à jour de champs, la suppression de champs vides, et l'agrégation des données. Il montre également comment stocker des résultats dans une nouvelle collection.

Transféré par

michaelboroz81
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP NoSQL – MongoDB en Java

Correction complete

Connexion a MongoDB en Java

import com . mongodb . client .*;


import com . mongodb . client . model .*;
import org . bson . Document ;
import java . util .*;

MongoClient mongoClient = MongoClients . create ( " mongodb :// localhost :27017 " ) ;
MongoDatabase database = mongoClient . getDatabase ( " mydb " ) ;
MongoCollection < Document > books = database . getCollection ( " books " ) ;

Partie II : Requêtes MQL en Java


1. Afficher les 200 premiers documents

books . find ()
. limit (200)
. forEach ( System . out :: println ) ;

2. Afficher titre, isbn et pages des livres de la categorie "Internet" + compter

books . find ( Filters . eq ( " categories " , " Internet " ) )


. projection ( Projections . fields (
Projections . include ( " title " , " isbn " , " pageCount " )
) ) . forEach ( System . out :: println ) ;

long count = books . countDocuments ( Filters . eq ( " categories " , " Internet " ) ) ;
System . out . println ( " Total : " + count ) ;

3. Trier par isbn croissant les livres de « David A. Black » ayant plus de 300
pages

books . find ( Filters . and (


Filters . eq ( " authors " , " David A . Black " ) ,
Filters . gt ( " pageCount " , 300)
))
. sort ( Sorts . ascending ( " isbn " ) )
. forEach ( System . out :: println ) ;

1
4. Livres dont le titre contient "Action" publies en 2011

books . find ( Filters . and (


Filters . regex ( " title " , " Action " , " i " ) ,
Filters . eq ( " publishedDate . year " , 2011)
))
. forEach ( System . out :: println ) ;

5. Ajouter un champ "emprunte" = "etudiants" aux livres MongoDB

books . updateMany (
Filters . regex ( " title " , " MongoDB " , " i " ) ,
Updates . set ( " emprunte " , " etudiants " )
);

6. Livres avec pages = 0 ou auteurs vide. Supprimer le champ vide.

// Afficher
books . find ( Filters . or (
Filters . eq ( " pageCount " , 0) ,
Filters . size ( " authors " , 0)
) ) . forEach ( System . out :: println ) ;

// Suppression des champs vides


books . updateMany ( Filters . eq ( " pageCount " , 0) ,
Updates . unset ( " pageCount " ) ) ;

books . updateMany ( Filters . size ( " authors " , 0) ,


Updates . unset ( " authors " ) ) ;

7. Auteurs publiant dans la categorie Microsoft (tries par pages decroissant)

books . aggregate ( Arrays . asList (


Aggregates . match ( Filters . eq ( " categories " , " Microsoft " ) ) ,
Aggregates . unwind ( " $authors " ) ,
Aggregates . sort ( Sorts . descending ( " pageCount " ) ) ,
Aggregates . project ( Projections . fields (
Projections . include ( " authors " , " pageCount " , " title " )
))
) ) . forEach ( System . out :: println ) ;

8. Ajouter deux auteurs (le prof et l’etudiant) aux livres contenant "Database"

books . updateMany (
Filters . regex ( " title " , " Database " , " i " ) ,
Updates . addEachToSet ( " authors " ,
Arrays . asList ( " Pr . Nassima Soussi " , " Moi ( Etudiant ) " )
)
);

2
9. Selectionner les livres qui n’appartiennent pas a certaines categories et
publies en 2009 ou 2011

books . find ( Filters . and (


Filters . nin ( " categories " , Arrays . asList (
" Business " , " Microsoft " , " Microsoft . NET " , " In Action "
)),
Filters . in ( " publishedDate . year " , Arrays . asList (2009 , 2011) )
))
. projection ( Projections . fields (
Projections . include ( " title " , " publishedDate " , " categories " )
))
. forEach ( System . out :: println ) ;

10. Moyenne des pages par categorie, tri decroissant

books . aggregate ( Arrays . asList (


Aggregates . unwind ( " $categories " ) ,
Aggregates . group ( " $categories " ,
Accumulators . avg ( " avgPages " , " $pageCount " )
),
Aggregates . sort ( Sorts . descending ( " avgPages " ) )
) ) . forEach ( System . out :: println ) ;

11. Pour chaque auteur : liste des categories où il publie (avec $addToSet),
stocker dans une nouvelle collection

MongoCollection < Document > result =


database . getCollection ( " authors_categories " ) ;

books . aggregate ( Arrays . asList (


Aggregates . unwind ( " $authors " ) ,
Aggregates . unwind ( " $categories " ) ,
Aggregates . group ( " $authors " ,
Accumulators . addToSet ( " categories " , " $categories " )
),
Aggregates . out ( " authors_categories " )
) ) . forEach ( System . out :: println ) ;

System . out . println ( " Collection authors_categories creee ! " ) ;

Vous aimerez peut-être aussi