Vous êtes sur la page 1sur 22

3

Travailler avec les documents


Les bases de donnes MongoDB
Architecture
Les bases de données MongoDB
Création / Suppression

 Création de bases de données


• Automatique Lorsque vous créez une base de donnes,
- # mongo <db_name> elle n’est pas présente sur la liste jusqu’au
- > use <db_name> moment ou vous créez au moins une
 Suppression de bases de données collection ou un document
• # mongo
• > use <db_name>;
• > db.runCommand({dropDatabase:
1});
• > db.dropDatabase();
Les bases de données MongoDB
Stockage des données physiques d’une base
 Limite en environnement 32 bits Hiérarchie des objets
 Ne permet pas de stocker plus de 2.5Gb de données
 Déconseillé pour de la production
 Le répertoire de stockage utilise la variable --dbPath
 En production
 Utiliser la version 64 bits
 Le répertoire de stockage utilise la variable --dbPath
Les collections
Une Collection c’est quoi ?
◦ Equivalent de la table en relationnel
◦ Deux modes de création
• Automatiquement lors d’une insertion de document (tuple)
• En exécutant la commande db.createCollection('<nom_collection>');
Les opérations sur les Collections
 Créer
db.createCollection('gens');
 Lister
show collections;
db.getCollections();
 Insérer un document
db.<collection_name>.insert({var1: "valeur", var2: "valeur", var3: "valeur"});
db.<collection_name>.save({var1: "valeur", var2: "valeur", var3: "valeur"});

 Supprimer
db.<nom_collection>.drop();
Les documents
Un document c’est quoi ?
◦ Equivalent d’un enregistrement (tuple) en relationnel
◦ Deux modes d’insertion
• En utilisant la commande db.<nom_collection>.insert() du shell
• En utilisant la commande db.<nom_collection>.save() du shell
• En utilisant un driver: PHP, Ruby, Java, Python
◦ Chaque document crée contient le champ « _id »
• Généré automatiquement
• Type primary key
• Indexé
Les documents
Le format JSON c’est quoi ?
JSON (JavaScript Object Notation)
• Permet de représenter de l’information structurée
• Format de données textuelle
• Utilise une notation JavaScript
• Décrit par la RFC 4627 => Document de référence

Un document JSON, ne comprend que deux éléments structurels :


- des ensembles de paires nom / valeur ;

- des listes ordonnées de valeurs.


Les documents

Le format JSON
Exemple
{
"pospect" : "ALFKI",
"nom" : "ORSYS",
"adresse" : {
"numero" : 77,
"codepostal" : "31000",
"ville" : "Toulouse"
}
}
Les documents

Exemple pratique d’utilisation


Les documents
Avantage du format JSON
 Format abstrait pour une représentation simplifiée dans les différents langages
 Indépendant du langage de programmation
 Simple et complet pour la représentation des objets Types disponibles en JSON
 Utilise des types de données connus et simples à décrire
 Une bonne lisibilité de la syntaxe
 Temps de traitement très proche de celui des fichiers XML
 Moins volumineux en terme de stockage
 Pour JavaScript un document JSON représente un objet
Les opérations CRUD (Create, Read, Update, Delete)
Create
 Opération CREATE ou Insertion permettent d’ajouter de nouveaux documents a une collection.
 Si la collection n’existe pas l’opération d’insertion la crée automatiquement.

 MongoDB fournit 2 méthodes d’insertion de documents dans une collection.


 db.collection.insertOne() => Depuis la version 3.2, pour inserer un simple document

db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)

 db.collection.insertMany() => Depuis la version 3.2, pour inserer plusieurs documents en une seule operation.
db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])
Les opérations CRUD
Create

db.inventory.insertMany([
{ item: "canvas", qty: 100, size: { h: 28, w: 35.5, uom: "cm" }, status: "A" },
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "mat", qty: 85, size: { h: 27.9, w: 35.5, uom: "cm" }, status: "A" },
{ item: "mousepad", qty: 25, size: { h: 19, w: 22.85, uom: "cm" }, status: "P" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "P" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" },
{ item: "sketchbook", qty: 80, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "sketch pad", qty: 95, size: { h: 22.85, w: 30.5, uom: "cm" }, status: "A" }
]);
Les opérations CRUD
Create
Les opérations CRUD
Read
Les opérations Read permettent de retourner les documents d’une collection. MongoDB fournit les méthodes suivantes pour lire les
données d’une collection:
 Pour interroger tous les documents d’une collection, on peut optionnellement passer en paramètre un document vide.
db.inventory.find({}) ou db.inventory.find();
 Pour spécifier une condition d'égalité, utiliser <champ>:<valeur> dans le filtre.
db.inventory.find({status:"D"}) => La syntaxe générale est : db.collection.find(<critere(s)>)
 Les operateurs logiques suivantes sont prises en compte :

- $gt => plus grand que - $all : [v1, v2, vN] => comporte toutes les valeurs
- $gte => plus grand ou égal a - $in : [v1, vN] => comporte au moins une valeur
- $lt => plus petit que - $exists : true => le champs doit exister (ou ne pas exister si false)
- $lte => plus petit ou égal a - /<chaine caractère>/ => Equivalent du LIKE en SQL
- $ne => different de
Les opérations CRUD
Read
Pour uniquement afficher le premier document de la collection

db.inventory.findOne();

Pour afficher les n premiers documents d’une collection

db.inventory.find().limit(5);

 Utiliser les operateurs logiques:


 AND => Afficher tous les documents de la collection inventory ou le status est egal a ‘A’ et qty plus petit que 30
db.inventory.find({status:"A",qty:{$lt:30}}) => SELECT * FROM inventory WHERE status = "A" AND qty < 30
 OR => Afficher tous les documents de la collection inventory ou le status est egal a ‘A’ out qty plus petit que 30
db.inventory.find({$or:[{status:"A"},{qty:{$lt:30}}]}) => SELECT * FROM inventory WHERE status = "A" OR qty < 30
 AND et OR
db.inventory.find({
status: "A",
$or: [{qty:{ $lt: 30}}, {item:/^p/ }]
})
=> SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")
Les opérations CRUD
Read (Documents imbriques)

Sélectionner tous les documents de la collection inventory dans lesquels le champ size correspond au document {h:14, w:21, uom:”cm”}

db.inventory.find( { size : {h : 14, w : 21, uom : "cm" } } )

Sélectionner tous les documents dans lesquelles le champ uom du document size est égal a “in”

db.inventory.find( { size.uom : " in" } )

Utilisation d’autres operateurs

db.inventory.find( { size.h : {$lt : 15} } )

 Utilisation des operateurs logiques

db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )


Les opérations CRUD
Read (Restreindre les champs)

Sélectionner les champs item et status de la collection inventory. Seule la colonne _id s’affiche par défaut

db.inventory.find( { status: "A" }, { item: 1, status: 1 } )

Supprimer le champ _id de la sélection

db.inventory.find( { status: "A" }, { item: 1, status: 1, _id:0 } )

Utilisation des champs imbriques

db.inventory.find(
{ status: "A" },
{ item: 1, status: 1, "size.uom": 1 }
)
Les opérations CRUD
Update
Les operations de mise a jour modifient les document existants dans la collection. MongoDB fournit les 3 options suivantes :

 db.collection.updateOne()

 db.collection.updateMany()

 db.collection.replaceOne()

On peut spécifier des critères ou des filtres pour identifier les documents a modifier.

L’exemple suivant met a jour le premier document dans lequel item est égal a “paper”

db.inventory.updateOne(
{ item: "paper" },
{
$set: { "size.uom": "cm", status: "P" },
$currentDate: { lastModified: true }
}
)
L’operateur $set est utilise pour modifier la valeur du champ size.uom a “cm” et la valeur de status a “p”
Les opérations CRUD
Update
Les opérations de mise a jour modifient les document existants dans la collection. MongoDB fournit les 3 options suivantes :

 db.collection.updateOne()

 db.collection.updateMany()

 db.collection.replaceOne()

On peut specifier des criteres ou des filtres pour identifier les documents a modifier.

L’exemple suivant met a jour le premier document dans lequel item est égal a “paper”

db.inventory.updateOne(
{ item: "paper" },
{
$set: { "size.uom": "cm", status: "P" }
}
)

L’operateur $set est utilise pour modifier la valeur du champ size.uom a “cm” et la valeur de status a “p”
Les opérations CRUD
Mise a jour multiple
L’exemple suivant met a jour le premier document dans lequel qty est inferieur a 50.

db.inventory.updateMany(
{ "qty": { $lt: 50 } },
{
$set: { "size.uom": "in", status: "P" },
$currentDate: { lastModified: true }
}
)
L’operateur $set est utilise pour modifier la valeur du champ size.uom a “in” et la valeur de status a “P”

Remplacer un document
db.inventory.replaceOne(
{ item: "paper" },
{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 40 } ] }
)

L’exemple ci-dessus remplace le premier document de la collection inventory ou item est egal a “ paper “
Les opérations CRUD
Delete
Les operations Delete suppriment les documents dans les collections. MongoDb fournit les methides suivantes :
- db.collection.deleteOne()
- Db.collection.deleMany()
db.inventory.deleteOne({"_id":ObjectId("5e4530b08e5f2903eb47e64f")})

db.inventory.deleteMany({"qty": {$lt : 50}})


Les opérations CRUD
Delete

{ _id: 1, category: "café", status: "A" }


{ _id: 2, category: "cafe", status: "a" }
{ _id: 3, category: "cafE", status: "a" }

db.myColl.deleteMany(
{ category: "cafe", status: "A" },
{ collation: { locale: "fr", strength: 1 } }
)

Vous aimerez peut-être aussi