12 Actions Puissantes Pour Apprendre À Créer Une Base De Données MongoDB

il y a 5 jours

Salut, Je t'écris cet article depuis le canapé situé dans le salon de mon appartement de Lubumbashi,

j'ai laissé la grande table pour placer mon ordinateur portable sur mes deux genoux(une très mauvaise habitude).

Pendant ce temps, j'écoute aussi de la bonne musique.

🎬 Est-il possible d'apprendre le MongoDB en 12 actions rapides ?

Tu penses peut-être que:

  • 🔴 c'est pas possible ;
  • 🔴 c'est pratiquement pas faisable d'apprendre MongoDB en 12 actions ;
  • 🔴 c'est probablement une blague ;

Tu as raison, C'est pas du tout scientifique de faire une telle déclaration !

Le système de gestion de base de données MongoDB est :

  • 🔴 Gros et puissant ;
  • 🔴 Plein des concepts hyper compliqué ;
  • 🔴 Le NoSQL est trop vaste.

Il est impossible de le démolir en 5 minutes maximum. Tu dis vrai, je ne peux pas te contredire !

  • 🔹Tu ne veux pas peut être l'installer parce que tu penses que l'apprentissage du MongoDB te prendra beaucoup de temps ;
  • 🔹Tu viens peut-être d'installer MongoDB sur ton ordinateur et tu veux aller plus vite mais tu le trouves trop embrouillant ;
  • 🔹Tu la peux être déjà installé, tu l'utilises au quotidien et tu trouves ça grossier de prétendre l'apprendre le MongoDB en 5 minutes ;
  • 🔹Tu aimerais savoir par curiosité si c'est possible de maîtriser le MongoDb en 5 minutes.

Dans cet article, je vais te montrer les 15 actions essentielles pour apprendre le MongoDB en 5 minutes.

Si tu n'as encore installé MongoDB voici un lien utile pour télécharger et installer la dernière version de MongoDB sur ton ordinateur.

1. Connaitre les termes SQL/MongoDB

SQL Terms MongoDB Terms
Base de données Base de données
Table Collection
Entité/Ligne Document
Colonne Clé/Valeur
Jointure des tables Documents intégrés
Clé Primaire Clé Primaire(La clé par défaut key_id de mongodb est unique)

2. Créer une base de données mongoDB

Tu peux créer une base de données mongoDB en suivant une logique simple.

Ta base de donnée doit contenir au moins une collection.

> Commandes :

use trakodedb
db.contacts.insert({ name: 'Admin', phone_number: '+243853501060' })

= Résultat des commandes :

WriteResult({ "nInserted" : 1 })

*Tu peux remplacer trakodedb par le nom de ta base de données.*

3. Afficher la liste des bases de données existantes

Tu auras besoin de visualiser la liste de toutes les bases de données MongoDB disponible.

> Commande n° 1 :

show dbs;

= Résultat de la commande n° 1 :

admin 0.000GB config 0.000GB local 0.000GB trakodedb 0.000GB

> Commande n° 2 :

db.adminCommand('listDatabases')

= Résultat de la commande n° 2 :

{ "databases" : [ { "name" : "admin", "sizeOnDisk" : 73728, "empty" : false }, { "name" : "config", "sizeOnDisk" : 110592, "empty" : false }, { "name" : "local", "sizeOnDisk" : 73728, "empty" : false }, { "name" : "trakodedb", "sizeOnDisk" : 40960, "empty" : false } ], "totalSize" : 299008, "ok" : 1 }

> Commande n° 3 :

db.getMongo().getDBNames()

Résultat de la commande n°3 :

[ "admin", "config", "local", "trakodedb" ]

3. Selectionner une base de données en particulier

J'insiste, ceci va créer trakodedb s’il n'existe pas !

Tu as la possibilité de sélectionner la base de données que tu souhaites utiliser sur la liste.

> Commande :

use trakodedb;

= Résultat de la commande :

switched to db trakodedb

Tu peux voir que j'ai utilisé trakodedb, tu peux sélectionner celle sur laquelle tu souhaites faire du changement.

4. Ajouter des informations dans une collection MongoDB

Partant de la collection contacts que nous avons créée au début.

Tu peux utiliser ces petites commandes pour ajouter des informations à l'intérieur

> Commande n° 1 :

db.contacts.insert({ name: 'Tom', phone_number: '+243890000000' })

= Résultat de la commande n° 1 :

WriteResult({ "nInserted" : 1 })

> Commande n° 2 :

db.contacts.save({name: 'Tom', phone_number: '+243890000000'});

= Resultat de la commande n° 2 :

WriteResult({ "nInserted" : 1 })

La différence avec save est que si le document passé contient un champ _id, si un document existe déjà avec ce_id il sera mis à jour au lieu d'être ajouté comme nouveau.

Depuis MongoDB 3.2.x tu as la possibilité d'utiliser deux nouvelles méthodes d'insertion dans une collection.

  • 🔹Tu as insertOne pour insérer une seule ligne :
db.contacts.insertOne({name: 'Tom', phone_number: '+243890000000'});
  • 🔹Tu as aussi insertMany pour insérer plusieurs ligne :
db.contacts.insertMany([
    {name: 'Tintin', phone_number: '+24389000001'},
    {name: 'Jerry', phone_number: '+243890000002'}, 
    {name: 'Rango', phone_number: '+243890000008'}
])

Note que l'insertion est surlignée comme obsolète dans tous les pilotes de langue officielle depuis la version 3.0.

La distinction complète étant que les méthodes shell étaient en retard sur les autres pilotes dans la mise en œuvre de la méthode. La même chose s'applique à toutes les autres méthodes CRUD

5. Modifier des informations d'une collection

MongoDB te propose aussi des méthodes pour modifier les informations d'une collection.

> Commande n°1 :

db.contacts.update(
    {name: 'Tom'}, 
    {phone_number: '+243890000019' , name: 'Tom'}
)

> Résultat de la commande n° 1:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Nouveau Depuis MongoDB 3.2

db.people.updateOne(
    {name: 'Tom'},
    { phone_number: '+243890000020' , name: 'Tom' }
) 
// Va modifier le premier document trouvé avec le name "Tom".
db.contacts.updateMany(
    { name: 'Tom' }, 
    { phone_number: '+243890000019' , name: 'Tom' }
) 
// Va modifier tout les résultats trouvé avec le name "Tom" 

Ou tu fais simplement la modification d'un seul champ d'un document. Dans ce cas, phone_number:

db.contacts.update(
	{ name: 'Tom' }, 
	{ $set: { phone_number: '+243890000020'}}
)

Tu peux également mettre à jour plusieurs documents simultanément en ajoutant un troisième paramètre.

Cette requête mettra à jour tous les documents dont le name est égal à Tom:

db.contacts.update(
	{name: 'Tom'}, 
	{ $set: { phone_number: '+243890000021'}}, 
	{multi: true}
)

Depuis MongoDB 3.2

db.contacts.updateOne(
	{name: 'Tom'},
	{ $set: { phone_number: '+243890000022'}}
) 

//Met à jour uniquement le premier document correspondant.
db.contacts.updateMany(
	{name: 'Tom'},
	{ $set: { phone_number: '+243890000023'}}
) 

//Met à jour tous les documents correspondants.

Si un nouveau champ doit être mis à jour, ce champ sera ajouté au document.

db.contacts.updateMany(
	{name: 'Tom'},
	{ $set: { phone_number: '+243890000024', age:'30'}}
)

Si un document doit être remplacé.

db.contacts.replaceOne(
	{ name: 'Tom' }, 
    { name: 'Tommy', phone_number: '+243890000025', age:'39'}
)

Remarque:

Les champs que tu utilises pour identifier l'objet seront enregistrés dans le document mis à jour.

Les champs qui ne sont pas définis dans la section de mise à jour seront supprimés du document.

6. Afficher les informations d'une collection

Chercher et afficher dans toute la collection tous les documents qui ont pour name Admin.

> Commande :

db.contacts.find({name: 'Admin'})

= Résultat en json pour plusieurs documents :

{ "_id" : ObjectId("5ea4568a0167bcc177d6ec60"), "name" : "Admin", "phone_number" : "+243893501060" }

Ou encore recher un seul document dans qui a pour name Tommy dans une collection.

> Commande :

db.people.findOne({name: 'Tommy'})

= Résultat en json pour un seul document :

{ "_id" : ObjectId("5ea456a00167bcc177d6ec61"), "name" : "Tommy", "phone_number" : "+243890000025", "age" : "39" }

Informations utiles :

Tu peux également spécifier les champs à renvoyer en passant un paramètre de sélection de champ.

Les éléments suivants excluront le champ _id et n'incluront que le champ âge:

db.contacts.find({name: 'Tom'}, {_id: 0, age: 1})

Remarque:

Par défaut, le champ _id sera retourné, même si vous ne le demandez pas.

Si tu ne souhaites pas récupérer le _id, tu peux simplement suivre l'exemple précédent et demander que le _id soit exclu en spécifiant _id: 0 (ou _id: false).

Si vous souhaitez rechercher un sous-enregistrement comme un objet d'adresse contenant le pays, la ville, etc.

db.contacts.find({'address.country': 'US'})

tu peux spécifier également le champ si nécessaire.

db.contacts.find({'address.country': 'CD'}, {'name': true, 'address.city': true})

Souviens toi que le résultat a une méthode .pretty() qui imprime joli JSON résultant

> Commande :

db.contacts.find().pretty()

= Résultat :

{ "_id" : ObjectId("5ea4568a0167bcc177d6ec60"), "name" : "Admin", "phone_number" : "+243893501060" } { "_id" : ObjectId("5ea456a00167bcc177d6ec61"), "name" : "Tommy", "phone_number" : "+243890000025", "age" : "39" } { "_id" : ObjectId("5ea45d080167bcc177d6ec6a"), "name" : "Jerry", "phone_number" : "+243890000002" } { "_id" : ObjectId("5ea45d080167bcc177d6ec6b"), "name" : "Rango", "phone_number" : "+243890000000" } { "_id" : ObjectId("5ea45fe60167bcc177d6ec6c"), "name" : "Admina", "phone_number" : "+243893501060" }

7. Afficher toutes les collections présentent dans une base de données

Tu auras besoin d'afficher la liste des collections présentent dans une base de données.

Je te signale que ces commandes fonctionnent si tu as déjà sélectionné une base de données avec la commande use nomdetabasededonnees

> Commande n°1 :

show collections;

= Résultat de la commande n°1 :

contacts

> Commande n°2 :

show tables;

= Résultat de la commande n°2 :

contacts

> Commande n°3 :

db.getCollectionNames();

= Résultat de la commande n°3 :

[ "contacts" ]

8. Supprimer des inforamtions d'une collection

Supprimer tout les documents trouvé avec le name Tommy.

Depuis MongoDB 3.2

db.contacts.deleteMany({name: 'Tommy'})

Dans toutes les versions

db.contacts.remove({name: 'Tommy'})

Ou tu peux supprimer juste un seul document

Depuis MongoDB 3.2

db.contacts.deleteOne({name: 'Tommy'})

Dans toutes les versions

db.contacts.remove({name: 'Tommy'}, true)

Apropos de la méthode MongoDB remove()

Si tu executes cette méthode sans argument ou elle va supprimer tout les documents présentent dans la collection.

db.contacts.remove();

ou

db.contacts.remove({});

9. Afficher toutes les fonctions MongoDB que tu peux utiliser dans une base de données

Tu veux connaitre toutes les fonctions possibles avec ta base de données, dans ce cas trakodedb.

Il te suffit de remplacer trakodedb par le nom de ta base de données.

> Commande :

db.trakodedb.help();

= Résultant tronqué de la commande :

DBCollection help db.trakodedb.find().help() - show DBCursor help ..................................................................................... db.trakodedb.latencyStats() - display operation latency histograms for this collection

10. Creation des utilisateur et ajouter les privilèges

Par défaut, MongoDB est accessible sans authentification et permet toutes les actions sur la base de données.

Tu vas constater que lors que ta base de données est sur un serveur connecté sur Internet, cette configuration par défaut manque de sécurité.

Ça devient même clairement du suicide si vous permettez de vous connecter à la base depuis le réseau…

Pour sécurcuriser tu vas éffectuer un petit réglage sur /etc/mongod.conf :

#network interfaces
net:
  port: 27017
  # n'autorise que l'adresse ip localhost (réglage par défaut)
  bindIp: 127.0.0.1

Tu as la possibilité d'ajouter un utilisateur.

> Commande :

db.createUser(
    {
      user: "trakode",
      pwd: "dbpassworkd123",
      roles: [
         { role: "readWrite", db: "trakodedb" },
      ]
    }
)

= Résultat de la commande :

Successfully added user: { "user" : "trakode", "roles" : [ { "role" : "readWrite", "db" : "trakodedb" } ] }

12. Vérifier la base de données en cours d'utilisation et la supprimer

Avec la commande db tu peux voir la base de données en cours d'utilisation.

> Commande :

db

= Résultat de la commande :

trakodedb

La commande db.dropDatabase() est utilisé pour supprimer la base de données en cours d'utilisation.

> Commande :

db.dropDatabase()

= Résultat de la commande :

{ "dropped" : "trakodedb", "ok" : 1 }

Conclusion

Tu viens de découvrir qu'il était tout à fait possible d'apprendre MongoDB en 12 actions rapides.

À présent, Tu es capable de :

  • 👉 Créer et sélectionner une base de données MongoDB ;
  • 👉 Faire des opérations d'ajout, modification et suppression des collections MongoDB;
  • 👉 Ajouter les utilisateurs et leurs privilèges ;
  • 👉 Visualiser toutes les tables contenue dans ta base de données ;
  • 👉 Enfin supprimer la base de données.

Sauf exception, Face à une base de données MongoDB ses commandes reviennent très souvent.

Tu as aimé cet article ? Partage-le avec tes collègues ou ami(e)s :

Hey oh ! , Ne rate rien !

1527 développeurs ont reçus mes conseils privés révolutionnaires

Reçois le guide gratuit "les 5 Façons de gagner sa vie avec le code"




Ecris avec le par BC DIBWE