Vous êtes sur la page 1sur 30

Chapitre 3 :

Le NoSQL avec MongoDB – les commandes de base

Support de cours
Pr. Adil CHERGUI
Les objectifs

Prise en main des bases de données NoSQL sur MongoDB.


Les bases de SCRUD : pour Search, Create, Read, Update, Delete.
Découvrir et créer une base de données

Pour découvrir les bases dans votre système MongoDB, tapez la commande suivante :
>show dbs

Pour créer une nouvelle base (il n’y a pas de commande spécifique pour la création de base) :
>use ma_base

Ensuite il faut faire une première insertion pour que la création prend effet :
Soit par la création d’une collection :
>db.createCollection(articles)
Ou directement par l’insertion d’un document dans une collection pas encore créée;
Création d’une nouvelle collection

La syntaxe de base de la commande createCollection() est la suivante .


>db.createCollection (nom_collection, options)
Dans la commande, il faut préciser le nom de la collection à créer. Les options sont utilisées pour
spécifier la configuration de la collection.
Champ Type Description

(Facultatif) Si c’est vrai, permet une collection plafonnée. La collection plafonnée est
une collection de taille fixe qui surécrit automatiquement ses entrées les plus
capped Boolean
anciennes lorsqu’elle atteint sa taille maximale. Si vous spécifiez vrai, vous devez
également spécifier le paramètre de taille.

(Facultatif) Si c’est vrai, créez automatiquement l’index sur le champ _id , la valeur
autoIndexId Boolean
par défaut est faux.

(Facultatif) Spécifie une taille maximale dans les octets pour une collection
size Nombre plafonnée. Si capped est vrai, alors vous devez spécifier ce champ aussi.

(Facultatif) Spécifie le nombre maximum de documents autorisés dans la collection


max Nombre
plafonnée.
Insertion d’un document :
insert()
Si nous voulons inserer un ducoment dans une collection, nous utilisons la méthode
insert(DOCUMENT), :
>db.articles.insert({titre: "Cours MongoDb", categorie : "Base de donées", tags :
["NoSQL","MongoDB","BigDATA"]});
Insertion d’un document :
insert()
Une autre alternative d’insertion consiste à créer une variable qui correspond à l’élément que
nous désirons insérer :
> var articleVar={titre: "Exercices MongoDB", categorie : "Exercices Base de données", tags :
["Exercices","problèmes","nosql"]};
Et ensuite procéder à l’insertion :
Insertion de plusieurs documents :
insertMany()
Si nous voulons insérer un ensemble de documents à la fois, nous utilisons la méthode
insertMany(). Ci-dessous un exemple d’insertion.
Afficher le contenu d’une collection

Après cette insertion la nouvelle base de données prend part dans le système MongoDB

Pour voir le contenu de cette base :


>db.articles.find()
Ou
>db.articles.find().pretty()
Supprimer une collection

La méthode suivante :
>db.nom_col.drop()
Permet supprimer une collection « nom_col » de la base
actuellement utilisée.
Voir l’exemple ci contre →
La méthode retourne true une fois la collection est
correctement supprimée, sinon elle retourne false.
Supprimer une base de données

Pour savoir quelle base est utilisée tapez la commande


>db

Pour supprimer une base de données actuelle nous utilisons la commande suivante :
>bd.dropDatabase();

Si aucune base n’est sélectionnée, cette commande supprimera par défaut la base test.
Aide MongoDB

Pour obtenir la liste de commandes, tapez


db.help() dans le client MongoDB. Cela vous
donnera une liste de commandes comme
indiqué dans la capture d’écran suivante.
Statistiques MongoDB

Pour obtenir des statistiques sur le serveur


MongoDB, tapez la commande db.stats()
dans le client MongoDB. Cela affichera le
nom de base de données, le nombre de
collectes et les documents dans la base de
données. La sortie de la commande est
affichée dans la capture d’écran suivante.
La méthode find()

Pour interroger les données de la collection MongoDB, vous devez utiliser la méthode find().
Syntaxe
• La syntaxe de base de la méthode find () est la suivante :
>db.nomCollection.find()
La méthode find () affichera tous les documents de manière non structurée.

• Pour afficher les résultats de manière formatée, vous pouvez utiliser la méthode pretty () .
Syntaxe
>db.nomCollection.find().pretty()

• Outre la méthode find (), il existe la méthode findOne () , qui ne renvoie qu'un seul
document.
La méthode find()

Pour interroger le document sur la base d'une condition, vous pouvez utiliser les opérations
suivantes.
L’équivalent de clause WHERE des SGBDR dans MongoDB
Operation Syntaxe Exemple Equivalent en SGBDR

Égalité {<key>:<value>} db.mycol.find({"by":"tutorials point"}).pretty() where by = 'tutorials point'

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

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

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

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

Non-égale / différent {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50


La méthode find()

Le ET logique MongoDB :
Dans la méthode find () , si vous passez plusieurs clés – valeurs en les séparant par ',’
alors MongoDB le traite comme si ces conditions sont séparées par le connecteur logique ET
(AND).
Pour expliciter clairement ce connecteur, voici la syntaxe de base de AND :
>db.nomCollection.find(
{
$and: [
{key1: value1}, {key2:value2}
]
}
).pretty()
Vous pouvez exprimer n’importe quel nombre de conditions dans la clause $and
La méthode find()

Le OU logique MongoDB
Pour interroger des documents en fonction de la condition OR, vous devez utiliser $or clause
comme.
Pour explicité clairement ce connecteur, voici la syntaxe de base de OR :
>db. nomCollection.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
Vous pouvez exprimer n’importe quel nombre de conditions dans la clause $or
La méthode find()

Utiliser le AND et OR ensemble


L'exemple suivant montrera les documents qui ont un nombre de « j’aime » supérieurs à 10
et dont le titre est soit «MongoDB Overview», soit par «Mongo Database»
>db.mycol.find({"likes": {$gt:10}, $or: [{"by": " mongo team "},
{"title": "MongoDB Overview"}]}).pretty()
{
"_id": ObjectId(7df78ad8902c),
"title": "MongoDB Overview",
"description": "MongoDB is no sql database",
"by": "mongo team",
"url": "http://www.mongodb.com",
"tags": ["mongodb", "database", "NoSQL"],
"likes": "100"
}
>
Changement et mise à jour d’un document

MongoDB dispose de deux méthodes principales pour le changement (ou mise à jour) de
documents au sein d’une collection. La première méthode est la méthode « update() », elle
permet de changer les valeurs des clés déjà présentent dans un documents en précisant les
nouvelles valeurs, le changement peut être partiel ou total. La deuxième méthode est
« save() », elle permet de remplacer un document d’une collection par un nouveau
document passé en paramètres.
Mise à jour avec : « update()»

La syntaxe de cette méthode est le suivant :


>db.Nom_Collection.update(FILTRE,
NOUVELLES_DONNES)
Considérant une collection “musiciens” qui
comporte les clés suivantes:
{
"_id" : "...",
"nom" : "...",
"instrument" : [
"...",
"...",
"..."
],
"d_naiss" : ...
}
Mise à jour avec : « update() »

Si nous désirons changer certaines informations de l’artiste dans le _id = 4.


Par exemple, nous effectuons le changement partiel suivant:
>db.musiciens.update({_id : 2},{$set: {instrument : ["Vocale","Violent","Octapad","Flute"]}})
Filtre Données à remplacer
Remarque :
$set permet de choisir les clés qui vont subir des changements de valeurs.
Si vous ne mettez pas $set, les autres clé_valeurs seront supprimés.
Mise à jour avec : « update() »

La méthode update de la façon dont nous l’avons utilisé, permet de changer (par defaut)
seulement le premier élément qui vérifie la condition de recherche.
Si nous voulons faire une modification sur tout les documents qui vérifient la condition de
recherche, il faut ajouté la clause {multi:true}. Explorer l’ordre suivant qui consiste à ajouté
un nouveau champs clé_valeur appelé categorie = "contemporain" à toutes les musiciens qui
sont nais après 1970 :
> db.musiciens.update({d_naiss : {$gt :1970}},{$set: {categorie: "Contemporain"}},{multi :
true})
Cela permet de mettre à jour un champ inexistantes (se transforme en création d’un nouveau
champs dans seulement les documents qui vérifient les critères de sélection) dans toutes les
collections dont le champs « d_naiss » est >1970.
Mise à jour avec : « update() »
Mise à jour avec : updateOne() et
updateMany()

D’autres méthodes altérnatives qui utilisent le même principe de modification :


updateOne(Filtre, NOUVELLES_DONNEES): permet de changer un seul document qui passe par
le filtre.
updateMany(Filtre, NOUVELLES_DONNEES) : permet de changer tous les documents qui passe
par le filtre.
Mise à jour avec : save()

La méthode save() permet de remplacer totalement le document recherché par le nouveau


document passé en paramètres. Si le document n’existe pas, cette méthode serait équivalente
à insert()
La syntaxe de save() est comme suite :

db.Nom_Collection.save(FILTRE, NOUVELLES_COLLECTION)
Mise à jour avec : save()
Supprimer un document : « remove() »

Pour supprimer un ou plusieurs document d’une collection :


>db.collection.remove( <Filtre>, <justOne>)
La méthode remove() prend deux paramètres : <Filtre> est le document qui permet de filtrer
(sélectionner) les documents que vous voulez supprimer. Le second paramètre <justOne> est un
paramètre booléen et optionnel, permet de limiter la suppression à un seul document lorsque
vous mettez 1 ou true, la valeur par défaut est false
Supprimer un document : « remove() »

Si vous placer {} dans le filtre :


>db.collection.remove( {})
Cela aura comme effet la suppression de tous les documents présent dans la collection.
La projection

La projection signifie la restriction des informations seulement aux informations qui nous
semblent intéressantes, à la place d’afficher tous les clés-valeurs que comporte un document.
Pour cela, la méthode find() accepte un second paramètre qui permet de faire des restrictions
en sélectionnant seulement les champs à apparître.
La syntaxe de cette projection est la suivante :
>db.collection.find( {Filtre}, {clé1 : 1, clé2 : 1,,,,,})
Seul les clés (champs) repérés par 1 qui vont apparaitre.
le _id apparaît par défaut, si vous voulez ne pas l’afficher alors ajoutez le dans les restrictions
avec la valeur 0 : _id : 0
Voir Exemple :
Diapo Suivant ➔
La projection
Supprimer un document : « remove() »

https://github.com/pomber/covid19
https://pomber.github.io/covid19/timeseries.json

Vous aimerez peut-être aussi