Vous êtes sur la page 1sur 7

Université de Mostaganem

M2, IA4IOT, 2023-2024


Module Gestion des données massives

TP0
Partie 01 : NoSQL MongoDb

1. Définition :
• Un SGBD NoSQL orienté documents écrit avec C++.
• Offre des performances élevées, une haute disponibilité et une évolutivité facile.
• Fonctionne suivant sur le concept de collection et de document.
2. Installation MongoDb (https://www.mongodb.com/docs/v3.0/installation/)
Windows
• Lancer l’installation à partir de l’exécutable (complète)
• Connecter au serveur
Linux
Lancer les commandes suivantes :
$ echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0
multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
Lancer MongoDb:
$ sudo service mongod start
MacOs
Installation avec Homebrew:
brew update
brew install mongodb
brew install mongodb --with-openssl
brew install mongodb –devel
Installation Manuelle :
tar -zxvf mongodb-osx-x86_64-3.0.15.tgz
mkdir -p mongodb
cp -R -n mongodb-osx-x86_64-3.0.15/ mongodb
export PATH=<mongodb-install-directory>/bin:$PATH
Lancer MongoDb :
mkdir -p /data/db
mongod
3. Principe

1
Relation terminologique entre RDBMS et MongoDB
RDBMS MongoDB
Database Database
Table Collection
Tuple/Row Document
column Field
Table Join Embedded Documents
Primary Key Primary Key (Default key _id provided by MongoDB itself)
3.1. Database (base de données)
• Un conteneur physique pour les collections.
• Chaque database possède son propre ensemble de fichiers sur le système de fichiers.
• Un seul serveur MongoDB possède généralement plusieurs bases de données.
Création de base de données dans MongoDb
> use DATABASE_NAME
Vérification de la base de données sélectionnée (courante)
> db
Affichage des bases de données
> show dbs
Note :
• Une base de données vide (ne contient pas de document) ne sera pas affichée.
• La base de données par défaut de MongoDB est test (toutes collection sera stocké dans la
base test)
Affichage du nom de la base de données, le nombre de collection et de document dans une base de
données
> db.stats()

2
Suppression d’une base de données
> db.dropDatabase()
Afficher la liste des commandes de MongoDB
> db.help()
Collection
• Un groupe de documents MongoDB qui existe au sein d'une seule base de données.
• Les collections n'appliquent pas de schéma.
• Les documents d'une collection peuvent avoir des champs différents.
Création d’une collection
>db.createCollection(name, options)
name : nom de la collection
options : document optionnel qui détermine la configuration de la collection
Liste des options :
Domaine Type Description
Active une collection de taille fixe qui écrase automatiquement ses entrées
capped Boolean les plus anciennes lorsqu'elle atteint sa taille maximale. Il faut également
spécifier le paramètre size.
autoIndexId Boolean Créer automatiquement un index sur le champ _id.s
size number Spécifie une taille maximale en octets pour une collection.
max number Spécifie le nombre maximum de documents autorisés dans la collection.

Affichage des liste des collections


> show collections
Suppression d’une collection
> db.collection_name.drop()
Insertion des données dans une collection Création de document.
Type de données
Type Signification
String Codage UTF-8
Integer 32 bit ou 64 bit
Boolean true/ false
Double virgule flottante

3
Min/ Max keys Comparer une valeur aux éléments BSON les plus bas et les plus élevés
Arrays Tableaux ou liste ou plusieurs valeurs dans une clé
Timestamp pour enregistrer lorsqu'un document a été modifié ou ajouté
Object documents embarqué (dénormalisé)
Null Valeur nulle
Symbol utilisé de la même manière qu'une chaîne ; réservé aux langages qui utilisent un
type de symbole spécifique.
stocker la date ou l'heure actuelle au format horaire UNIX en créant un objet Date
Date
et en y passant le jour, le mois et l'année.
Object ID Identificateur de document
Binary data Donnée binaire
Code Stockage du code Javascript dans un document
Regular
Expression régulière
expression
Document
• Un document est un ensemble de paires clé-valeur.
• Les documents ont un schéma dynamique.
• Le schéma dynamique signifie que les documents d'une même collection n'ont pas
besoin d'avoir le même ensemble de champs ou la même structure, et que les champs
communs dans les documents d'une collection peuvent contenir différents types de
données.
• Les documents d'une collection ont un objectif similaire ou connexe.
• Dans MongoDB, chaque document a une clé "_id". La valeur de la clé "_id" peut être de
n'importe quel type. Cependant, il s'agit par défaut d'un ObjectId.
Syntaxe :
field1 : ”value1”,
field2 : ”value2”,

fieldn : ”valuen”,
Création d’un document :
1. >db. collection_name.insert({document})
2. >db.collection_name.insertOne({document}).
3. >db.collection_name.insertMany([{document_1}, …, {document_n}]).
Afficher le nombre de document :
db. collection_name..countDocuments()

Object Constructors and Methods


1. WriteResult () : contient l'état du résultat des méthodes d'écriture mongosh
"nMatched" : Nombre de documents sélectionnés pour la mise à jour.
"nUpserted" : Nombre de documents insérés.
"nModified" : Nombre de documents existants mis à jour.
"nRemoved" : Nombre de documents supprimés.
2. BulkWriteResult () : contient les résultats de la méthode Bulk.execute() qui génère des
opérations en bloc utilisé pour construire une liste d'opérations d'écriture à effectuer en bloc
pour une seule collection.

4
"writeErrors" : Un tableau de documents qui contient des informations concernant toute erreur, non
liée à des problèmes d'écriture, rencontrée lors de l'opération de mise à jour. Le tableau writeErrors
contient un document d'erreur pour chaque opération d'écriture qui génère une erreur.
"writeConcernErrors" : Document qui décrit l'erreur liée au problème d'écriture.
"nInserted" : Nombre de documents insérés à l'aide de la méthode Bulk.insert().
"nUpserted" : Nombre de documents insérés via des opérations avec l'option Bulk.find.upsert().
"nMatched" : Nombre de documents existants sélectionnés pour la mise à jour ou le remplacement.
"nModified" : Nombre de documents existants mis à jour ou remplacés.
"nRemoved" : Nombre de documents supprimés.
"upserted" : Nombre de documents insérés via des opérations avec l'option Bulk.find.upsert().
Résultat de la création
"acknowledged" : Un booléen reconnu, défini sur vrai si l'opération s'est exécutée avec un problème
d'écriture ou sur faux si le problème d'écriture a été désactivé.
"insertedIds" : Un tableau insertIds, contenant des valeurs _id pour chaque document inséré avec
succès, liste d’ObjectId.
Requête dans MongoDB sur les documents
• Méthode find() : affiche tous les documents de manière non structurée.
Syntaxe : >db.COLLECTION_NAME.find()
>db.COLLECTION_NAME.find ({},{field:1}) 1 détermine que si le champs Field est affiché dans les
résultats (de chaque document c’est la projection). 0 (sinon)
>db.COLLECTION_NAME.find().limit(NUMBER) détermine le nombre de document à afficher.
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER) le nombre de premiers
documents ignorés.
>db.COLLECTION_NAME.find().sort({KEY:1}) spécifier l'ordre de tri, 1 et -1 sont utilisés. 1 est
utilisé pour l'ordre croissant tandis que -1 est utilisé pour l'ordre décroissant.
• Méthode findOne() : affiche un seul document.
Syntaxe: >db.COLLECTION_NAME.findOne()
• Méthode pretty(): affiche les résultats de manière formatée (structuré et organisé).
Syntaxe: >db.COLLECTION_NAME.pretty()
• Méthode count () : nombre
Syntaxe: db.COLLECTION_NAME.find().count()
• Méthode distinct () : afficher les champs distainctes
Syntaxe: db.COLLECTION_NAME. distinct (“Field”)
Operations dans les requêtes MongoDB en fonction des requête SQL :
Opération Syntaxe Example Equivalent en SQL
where by =
égalité {<key>:{$eg;<value>}} db.mycol.find({"by":"tutorials point"}).pretty()
'tutorials point'

inférieur {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50

Inférieur {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50


ou égale
supériuer {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50

Supérieur {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50


ou égale
Pas égale {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50

5
Where name
Valeurs {<key>:{$in:[<value1>, db.mycol.find({"name":{$in:["Raj", "Ram", matches any of the
dans un <value2>,……<valueN>]}} "Raghu"]}}).pretty() value in :["Raj",
tableau "Ram", "Raghu"]
Where name values
Valeurs is not in the array
pas dans {<key>:{$nin:<value>}} db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty() :["Ramu",
un "Raghav"] or,
tableau doesn’t exist at all

• AND: et logique.
Syntaxe: >db.nom_collection.find({ $and: [ {<key1>:<value1>}, { <key2>:<value2>} ] })
• OR: ou logique.
Syntaxe:>db.nom_collection.find({ $or: [ {<key1>:<value1>}, { <key2>:<value2>} ] })
• NOR:
Syntaxe: >db.COLLECTION_NAME.find({$nor: [{key1: value1}, {key2:value2}]})
• NOT:
Syntaxe: >db.COLLECTION_NAME.find({$not: [{key1: value1}, {key2:value2}]})
• Méthode update(): mise à jour des valeurs dans un document existant.
Syntaxe: >db.COLLECTION_NAME.update({Data}, {$set {UPDATED_DATA}})
• Méthode save(): remplace le document existant par le nouveau document passé dans la
méthode save().
Syntaxe: >db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
Note: À partir de MongoDB 4.2, la méthode db.collection.save() est obsolète. Utilisez plutôt
db.collection.insertOne() ou db.collection.replaceOne().
• Méthode findOneAndUpdate () : mise à jour des valeurs dans un document existant et affiche
le résultat de la modification.
Syntaxe: >db.COLLECTION_NAME.findOneAndUpdate({Data}, {$set {UPDATED_DATA}})
• Méthode UpdateOne () : mise à jour des valeurs d’un seul document existant
Syntaxe: >db.COLLECTION_NAME. UpdateOne({Data}, {$set {UPDATED_DATA}})
• Méthode UpdateMany () : mise à jour des valeurs de plusieurs documents existants.
Syntaxe: >db.COLLECTION_NAME. UpdateMany({Data}, {$set {UPDATED_DATA}})
• Méthode remove() : suppression d’un document à partir d’une collection en utilisant 2 options.
deletion criteria (les critères de suppression selon les documents seront supprimés) et
justOne (si défini sur true ou 1, un seul document sera supprimé)
Syntaxe:
>db.mycol.remove({'field':value'})
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1) suppression d’un seule document (le
premier enregistrement)
db. COLLECTION_NAME.remove({}) ) suppression de tous les documents.
Indexation :
• Les index prennent en charge la résolution efficace des requêtes.
• Les index sont des structures de données spéciales, qui stockent une petite partie de
l'ensemble de données sous une forme facile à parcourir. L'index stocke la valeur d'un

6
champ spécifique ou d'un ensemble de champs, triés par la valeur du champ comme
spécifié dans l'index.
• Sans index, MongoDB doit analyser chaque document d'une collection pour
sélectionner les documents qui correspondent à l'instruction de requête. Cette
analyse est très inefficace et nécessite que MongoDB traite un grand volume de
données.
Création d’indexe :
• Méthode createIndex() : mise à jour des valeurs de plusieurs documents existants.
Syntaxe: >db.COLLECTION_NAME.createIndex({“Field”:1}) 1 pour l’ordre croissant, -1 est pour
l’ordre décroissant.
Option de la création de l’indexe :
Paramètre Type Description
Construit l'index en arrière-plan afin que la création d'un index ne bloque
background Boolean pas les autres activités de la base de données. Spécifiez true pour
construire en arrière-plan. La valeur par défaut est faux.
Crée un index unique afin que la collection n'accepte pas l'insertion de
documents où la ou les clés d'index correspondent à une valeur existante
unique Boolean
dans l'index. Spécifiez true pour créer un index unique. La valeur par
défaut est faux.
Nom de l'index. S'il n'est pas spécifié, MongoDB génère un nom d'index
name string
en concaténant les noms des champs indexés et l'ordre de tri.
Si vrai, l'index référence uniquement les documents avec le champ
spécifié. Ces index utilisent moins d'espace mais se comportent
sparse Boolean
différemment dans certaines situations (en particulier les tris). La valeur
par défaut est faux.
Spécifie une valeur, en secondes, en tant que TTL pour contrôler la durée
expireAfterSeconds integer pendant laquelle MongoDB conserve les documents dans cette
collection.
Le poids est un nombre compris entre 1 et 99 999 et indique l'importance
weights document
du champ par rapport aux autres champs indexés en termes de score.
default_language string Pour un index de texte. La valeur par défaut est l'anglais.
Pour un index de texte, spécifiez le nom du champ dans le document qui
language_override string contient, la langue pour remplacer la langue par défaut. La valeur par
défaut est la langue.
• Méthode dropIndex(): supprimer un indexe.
Syntaxe: db.COLLECTION_NAME.dropIndex("name_of_the_index")
• Méthode dropIndexes(): supprimer plusieurs indexes .
Syntaxe: db.COLLECTION_NAME.dropIndexes("name_of_the_indexes")
• Méthode getIndexes(): retourner la description des indexes .
db.COLLECTION_NAME.getIndexes()

Vous aimerez peut-être aussi