Vous êtes sur la page 1sur 9

02/12/2021 13:44 Alexandre Terrasa

(http://uqam.ca)

Département d'informatique

Alexandre Terrasa

Alexandre Terrasa (../../../../../index.html)

MongoDB
Démonstration
MongoDB
Installation
Windows
Mac
Linux
Client mongo .
Exercices
Exercice 1
Exercice 2
Exercice 3
Exercice 4
Exercice 5

Démonstrations (../../../../index.html) /  Inf4375 (../../..) /  Archives (../..) /  Automne2014 (../index.html)


/  Semaine03

MongoDB
Démonstration
Installer MongoDB
Comprendre le fonctionnement de MongoDB
Faire des opérations simples à la console

MongoDB
MongoDB est un système de gestion de bases de données NoSQL (http://fr.wikipedia.org/wiki/NoSQL).
Contrairement aux bases de données relationnelles, dans MongoDB on n'utilise pas des tables mais des
documents au format JSON.

Pour en apprendre plus sur MongoDB, jetez un coup d'oeil au site officiel: mongodb.org
(http://www.mongodb.org/)

Installation

moz-code.org/uqam/demos/INF4375/archives/automne2014/semaine03/index.html#Exercice_1 1/9
02/12/2021 13:44 Alexandre Terrasa

Nous allons maintenant voir comment installer MongoDB sur vos machines. Dans le cadre du cours INF4375,
Jacques vous recommande de travailler avec une version >= 2.4.0 .

La version stable actuelle est la 2.6.4 .

Quelle que soit votre plate-forme (Windows, Mac, Linux) vous trouverez les paquets d'installation directement
sur le site (http://www.mongodb.org/downloads (http://www.mongodb.org/downloads)).
Pour plus
d'informations n'hésitez pas à vous diriger vers le guide d'installation
(http://docs.mongodb.org/manual/installation/) de MongoDB.

Windows
Attention, sur les postes du laboratoire vous ne pouvez pas utiliser l'installeur!

Comment installer MongoDB manuellement au laboratoire?

1. Téléchargez la version zip (https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-


2.6.4.zip) de MongoDB pour Windows (64-bit zip).

2. Extraire l'archive zip sur votre poste (elle doit contenir un répertoire bin\ ).

3. Créer les dossiers C:\data et C:\data\db (c'est là que MongoDB stocke vos données et d'autres
choses).

4. Dans un ligne de commande: lancez le serveur: bin\mongod.exe .

Vous devriez obtenir quelque chose comme:

$ mongod

Tue Sep 16 18:24:14 [initandlisten] MongoDB starting : pid=24986 port=27017 dbpath=/dat


a/db/ 64-bit host=h

Tue Sep 16 18:24:14 [initandlisten] db version v2.0.4, pdfile version 4.5

Tue Sep 16 18:24:14 [initandlisten] git version: nogitversion

Tue Sep 16 18:24:14 [initandlisten] build info: Linux lamiak 2.6.42-37-generic #58-Ubun
tu SMP Thu Jan 24 1

Tue Sep 16 18:24:14 [initandlisten] options: {}

Tue Sep 16 18:24:14 [initandlisten] journal dir=/data/db/journal

Tue Sep 16 18:24:14 [initandlisten] recover : no journal files present, no recovery nee
ded

Tue Sep 16 18:24:14 [initandlisten] waiting for connections on port 27017

Tue Sep 16 18:24:14 [websvr] admin web console waiting for connections on port 28017

Mac
Suivre les instructions ici (http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/).

Linux
Le plus simple est d'installer le paquet avec sudo apt-get install mongodb .

Pensez ensuite à vérifier la version avec mongod --version . Si ce n'est pas la bonne version, vous pouvez
toujours suivre la procédure manuelle (http://docs.mongodb.org/manual/administration/install-on-linux/).

Attention, si vous passez par apt-get install , le serveur se lance alors avec la commande sudo service
mongodb start .

Client mongo .
moz-code.org/uqam/demos/INF4375/archives/automne2014/semaine03/index.html#Exercice_1 2/9
02/12/2021 13:44 Alexandre Terrasa

Ce que nous venons de lancer c'est le serveur: mongod (pour mongo daemon).

Pour interragir avec ce serveur, il nous faut un client. Pour l'instant, nous allons lancer nos requêtes au serveur
au travers de la console mongo .

Dans une ligne de commande lancez l'éxécutable bin\mongo.exe . Sous MacOS X ou Linux lancez le client
via la commande mongo .

Une fois connecté, un shell doit apparaître:

$ mongo

MongoDB shell version: 2.0.4

connecting to: test

>

C'est avec cette invite de commande que nous allons manipuler MongoDB.

Pour apprendre les commandes basiques, je vous recommande la lecture du getting started
(http://docs.mongodb.org/manual/tutorial/getting-started/) issu de la documentation officielle de MongoDB.

Rappelez vous que la commande help permet d'afficher la liste des commandes disponibles et que vous
pouvez obtenir plus d'informations sur une commande en tapant commande.help() .

Exercices
Exercice 1
Créez une nouvelle base de données nommée inf4375 et vérifiez qu'elle est sélectionnée.

Correction:

> use inf4375

Exercice 2
Créez une nouvelle collection nommée produits et y insérer le document suivant:

nom: Macbook Pro


fabriquant: Apple
prix: 1299.99
options:
Intel Core i5
Retina Display
Long life battery

Rajoutez un autre document dans produits :

nom: Macbook Air


fabriquant: Apple
prix: 1099.99
ultrabook: true
options:
Intel Core i7
SSD
Long life battery

moz-code.org/uqam/demos/INF4375/archives/automne2014/semaine03/index.html#Exercice_1 3/9
02/12/2021 13:44 Alexandre Terrasa

Et enfin un dernier document:

nom: Thinkpad X230


fabriquant: Lenovo
prix: 999.99
ultrabook: true
options:
Intel Core i5
SSD
Long life battery

Correction:

> db.produits.insert({

nom: "Macbook Pro",

fabriquant: "Apple",

prix: 1299,

options: ["Intel Core i5", "Retina Display", "Long life battery"]

})

> db.produits.insert({

nom: "Macbook Pro Air",

fabriquant: "Apple",

prix: 1099.99,

options: ["Intel Core i7", "SSD", "Long life battery"]

})

> db.produits.insert({

nom: "Thinkpad X230",

fabriquant: "Lenovo",

prix: 999.99,
"ultrabook": true,

options: ['Intel Core i5', 'SSD', 'Long life battery']

})

Exercice 3
Effectuez les requêtes de lecture suivantes:

1. Récupérez tous les produits.


2. Récupérez le premier produit
3. Trouvez l' id du Thinkpad et faites la requête pour récupérer ce produit avec son id .
4. Récupérez les produits dont le prix est supérieur à 1200$
5. Récupérez le premier produit ayant le champ ultrabook à true
6. Récupérez le premier produit dont le nom contient Macbook
7. Récupérez les produits dont le nom commence par Macbook

Récupérer tous les produits:

moz-code.org/uqam/demos/INF4375/archives/automne2014/semaine03/index.html#Exercice_1 4/9
02/12/2021 13:44 Alexandre Terrasa

> db.produits.find()

{ "_id" : ObjectId("51ddf0d334de89241d03e21e"), "nom" : "Macbook Pro", "fabriquant" : "Appl


e", "prix" : 1299, "options" : [ "Intel Core i5", "Retina Display", "Long life battery" ] }

{ "_id" : ObjectId("51ddf0f234de89241d03e21f"), "nom" : "Macbook Pro Air", "fabriquant" : "Ap


ple", "prix" : 1099.99, "options" : [ "Intel Core i7", "SSD", "Long life battery" ] }

{ "_id" : ObjectId("51ddf12834de89241d03e220"), "nom" : "Thinkpad X230", "fabriquant" : "Leno


vo", "prix" : 999.99, "ultrabook" : true, "options" : [ "Intel Core i5", "SSD", "Long life ba
ttery" ] }

Récupérer le premier produit

> db.produits.find()[0]

"_id" : ObjectId("51ddf0d334de89241d03e21e"),

"nom" : "Macbook Pro",

"fabriquant" : "Apple",

"prix" : 1299,

"options" : [
"Intel Core i5",

"Retina Display",

"Long life battery"

Trouvez l'id du Thinkpad et faites la requête pour récupérer ce produit avec son id:

> db.produits.find({'_id': ObjectId("51ddf12834de89241d03e220")})

{ "_id" : ObjectId("51ddf12834de89241d03e220"), "nom" : "Thinkpad X230", "fabriquant" : "Leno


vo", "prix" : 999.99, "ultrabook" : true, "options" : [ "Intel Core i5", "SSD", "Long battery
life" ] }

Récupérer les produits dont le prix est supérieur à 1200$:

> db.produits.find({'prix': {$gt: 1200}})

{ "_id" : ObjectId("51ddf0d334de89241d03e21e"), "nom" : "Macbook Pro", "fabriquant" : "Appl


e", "prix" : 1299, "options" : [ "Intel Core i5", "Retina Display", "Long battery life" ] }

Récupérer le premier produit ayant le champ ultrabook à true:

> db.produits.find({'ultrabook': true})

{ "_id" : ObjectId("51ddf12834de89241d03e220"), "nom" : "Thinkpad X230", "fabriquant" : "Leno


vo", "prix" : 999.99, "ultrabook" : true, "options" : [ "Intel Core i5", "SSD", "Long battery
life" ] }

Récupérer le premier produits donc le nom contient Macbook:

moz-code.org/uqam/demos/INF4375/archives/automne2014/semaine03/index.html#Exercice_1 5/9
02/12/2021 13:44 Alexandre Terrasa

> db.produits.find({'nom': /Macbook/})[0]

"_id" : ObjectId("51ddf0d334de89241d03e21e"),

"nom" : "Macbook Pro",

"fabriquant" : "Apple",

"prix" : 1299,

"options" : [
"Intel Core i5",

"Retina Display",

"Long battery life"

Récupérer les produits dont le nom commence avec Macbook:

> db.produits.find({'nom': /^Macbook/})

{ "_id" : ObjectId("51ddf0d334de89241d03e21e"), "nom" : "Macbook Pro", "fabriquant" : "Appl


e", "prix" : 1299, "options" : [ "Intel Core i5", "Retina Display", "Long battery life" ] }

{ "_id" : ObjectId("51ddf0f234de89241d03e21f"), "nom" : "Macbook Pro Air", "fabriquant" : "Ap


ple", "prix" : 1099.99, "options" : [ "Intel Core i7", "SSD", "Long battery life" ] }

Exercice 4
1. Supprimez les deux produits dont le fabricant est Apple.
2. Supprimez le Lenovo X230 en utilisant uniquement son id .

Correction:

> db.produits.remove({'fabriquant': 'Apple'})

> db.produits.remove({'_id': ObjectId("51ddf12834de89241d03e220")})

Exercice 5
Dans cet exercice, nous allons modéliser un système de facturation très simple.

Voici deux factures :

Facture numéro 10012A :

Date de facture: 2013-07-04


Client:
Nom: Alexandre Terrasa
Courriel: foobar@example.com
Liste des produits (2 produits):
Code: MACBOOKAIR
Nom: Macbook Air
Prix: 999.99
Quantite: 1
Code: APPLESUPPORT
Nom: AppleCare 1 an
Prix: 149.99
Quantite: 1
Total: 1149.98

moz-code.org/uqam/demos/INF4375/archives/automne2014/semaine03/index.html#Exercice_1 6/9
02/12/2021 13:44 Alexandre Terrasa

Facture numéro 10013A :

Date de facture: 2013-07-05


Client:
Nom: Jacques Berger
Courriel: berger.jacques@uqam.ca
Liste des produits (1 produit) :
Code: LENOVOX230
Nom: Lenovo Thinkpad X230
Prix: 899.99
Quantite: 1
Total : 899.99

Effectuez les actions suivantes:

1. Insérer les deux factures dans la base


2. Récupérer la facture avec le numéro est 10013A
3. Modifier la facture 10012A en changeant la date pour le 2013-07-03 et le courriel du contact pour
alex@example.com
4. Récupérer la facture avec le produit vendu ayant un code LENOVOX230
5. Supprimer la facture 10012A

Correction:

moz-code.org/uqam/demos/INF4375/archives/automne2014/semaine03/index.html#Exercice_1 7/9
02/12/2021 13:44 Alexandre Terrasa

> db.factures.insert({

"numero_facture" : "10012A",

"date" : new Date("Jul 4, 2013"),

"client" : {

"nom" : "Alexandre Terrasa",

"email" : "foobar@example.com"

},

"produits" : [

"code" : "MACBOOKAIR",

"nom" : "Macbook Air",

"prix" : 999.99,

"quantite" : 1

},

"code" : "APPLESUPPORT",

"nom" : "AppleCare 1 an",

"prix" : 149.99,

"quantite" : 1

],

"total" : 1149.98

})

> db.factures.insert({

"numero_facture" : "10013A",

"date" : new Date("Jul 5, 2013"),

"numero_facture" : "10013A",

"client" : {

"nom" : "Jacques Berger",

"email" : "berger.jacques@uqam.ca"

},

"produits" : [

"code" : "LENOVOX230",

"nom" : "Lenovo Thinkpad X230",

"prix" : 899.99,

"quantite" : 1

},

],

"total" : 899.99

})

> db.factures.find({'numero_facture': '10013A'})

{ "_id" : ObjectId("51de023dcb544aade2fd7cb8"), "numero_facture" : "10013A", "date" : ISODate


("2013-07-05T04:00:00Z"), "client" : { "nom" : "Jacques Berger", "email" : "berger.jacques@uq
am.ca" }, "produits" : [ { "code" : "LENOVOX230", "nom" : "Lenovo Thinkpad X230", "pr
ix" : 899.99, "quantite" : 1 } ], "total" : 899.99 }

> db.factures.update(

{'numero_facture': '10012A'},

{ $set:

'date': new Date('Jul 3, 2013'),

'client.email': 'alex@example.com'

moz-code.org/uqam/demos/INF4375/archives/automne2014/semaine03/index.html#Exercice_1 8/9
02/12/2021 13:44 Alexandre Terrasa

> db.facture.find({produits: { $elemMatch: {'code': 'LENOVOX230'}}})

{ "_id" : ObjectId("51de039acb544aade2fd7cbb"), "numero_facture" : "10013A", "date" : ISODate


("2013-07-05T04:00:00Z"), "client" : { "nom" : "Jacques Berger", "email" : "berger.jacques@uq
am.ca" }, "produits" : [ { "code" : "LENOVOX230", "nom" : "Lenovo Thinkpad X230", "pr
ix" : 899.99, "quantite" : 1 } ], "total" : 899.99 }

> db.facture.remove({'numero_facture': '10012A'})

Alexandre Terrasa © 2020

last modification Tue Sep 15 00:04:24 2020

Proudly powered by nit (http://nitlanguage.org)!

moz-code.org/uqam/demos/INF4375/archives/automne2014/semaine03/index.html#Exercice_1 9/9

Vous aimerez peut-être aussi