{"id":63072,"date":"2022-11-08T09:55:02","date_gmt":"2022-11-08T08:55:02","guid":{"rendered":"https:\/\/kinqsta.com\/fr\/?p=63072&#038;preview=true&#038;preview_id=63072"},"modified":"2024-09-17T14:43:05","modified_gmt":"2024-09-17T13:43:05","slug":"creer-base-de-donnees-mongodb","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/","title":{"rendered":"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre"},"content":{"rendered":"<p>En fonction de vos exigences pour votre logiciel, vous pouvez donner la priorit\u00e9 \u00e0 la flexibilit\u00e9, \u00e0 l&rsquo;\u00e9volutivit\u00e9, aux performances ou \u00e0 la vitesse. Par cons\u00e9quent, les d\u00e9veloppeurs et les entreprises sont souvent d\u00e9sorient\u00e9s lorsqu&rsquo;ils choisissent une base de donn\u00e9es pour leurs besoins. Si vous avez besoin d&rsquo;une base de donn\u00e9es qui offre une flexibilit\u00e9 et une \u00e9volutivit\u00e9 \u00e9lev\u00e9es, ainsi que l&rsquo;agr\u00e9gation de donn\u00e9es pour l&rsquo;analyse des clients, MongoDB est peut-\u00eatre la solution qu&rsquo;il vous faut !<\/p>\n\n<p>Dans cet article, nous allons aborder la structure de la base de donn\u00e9es MongoDB et comment cr\u00e9er, surveiller et g\u00e9rer votre base de donn\u00e9es ! Commen\u00e7ons.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Comment est structur\u00e9e une base de donn\u00e9es MongoDB ?<\/h2>\n<p>MongoDB est une base de donn\u00e9es NoSQL sans sch\u00e9ma. Cela signifie que vous ne sp\u00e9cifiez pas de structure pour les tables\/bases de donn\u00e9es comme vous le faites pour les bases de donn\u00e9es SQL.<\/p>\n<p>Saviez-vous que les bases de donn\u00e9es NoSQL sont en fait plus rapides que les bases de donn\u00e9es <a href=\"https:\/\/kinqsta.com\/fr\/blog\/mongodb-vs-mysql\/\">relationnelles<\/a> ? Cela est d\u00fb \u00e0 des caract\u00e9ristiques comme l&rsquo;indexation, le sharding et les pipelines d&rsquo;agr\u00e9gation. MongoDB est \u00e9galement connu pour sa rapidit\u00e9 d&rsquo;ex\u00e9cution des requ\u00eates. C&rsquo;est pourquoi il est pr\u00e9f\u00e9r\u00e9 par des entreprises comme Google, Toyota et Forbes.<\/p>\n<p>Ci-dessous, nous allons explorer quelques caract\u00e9ristiques cl\u00e9s de MongoDB.<\/p>\n<h3>Documents<\/h3>\n<p>MongoDB poss\u00e8de un mod\u00e8le de donn\u00e9es de type document qui stocke les donn\u00e9es sous forme de documents JSON. Les documents correspondent naturellement aux objets du code de l&rsquo;application, ce qui rend son utilisation plus simple pour les d\u00e9veloppeurs.<\/p>\n<p>Dans une table de base de donn\u00e9es relationnelle, vous devez ajouter une colonne pour ajouter un nouveau champ. Ce n&rsquo;est pas le cas avec les champs dans un document JSON. Les champs d&rsquo;un document JSON peuvent diff\u00e9rer d&rsquo;un document \u00e0 l&rsquo;autre, ils ne seront donc pas ajout\u00e9s \u00e0 chaque enregistrement de la base de donn\u00e9es.<\/p>\n<p>Les documents peuvent stocker des structures comme des tableaux qui peuvent \u00eatre imbriqu\u00e9s pour exprimer des relations hi\u00e9rarchiques. En outre, MongoDB convertit les documents en un type JSON binaire (BSON). Cela garantit un acc\u00e8s plus rapide et une prise en charge accrue de divers types de donn\u00e9es comme les cha\u00eenes de caract\u00e8res, les nombres entiers, les nombres bool\u00e9ens, et bien plus encore !<\/p>\n<h3>Jeux de r\u00e9pliques<\/h3>\n<p>Lorsque vous cr\u00e9ez une nouvelle base de donn\u00e9es dans MongoDB, le syst\u00e8me cr\u00e9e automatiquement au moins 2 copies suppl\u00e9mentaires de vos donn\u00e9es. Ces copies sont connues sous le nom de \u00ab replica sets \u00bb, et elles r\u00e9pliquent continuellement les donn\u00e9es entre elles, assurant ainsi une meilleure disponibilit\u00e9 de vos donn\u00e9es. Elles offrent \u00e9galement une protection contre les temps d&rsquo;arr\u00eat lors d&rsquo;une panne du syst\u00e8me ou d&rsquo;une maintenance planifi\u00e9e.<\/p>\n<h3>Collections<\/h3>\n<p>Une collection est un groupe de documents associ\u00e9s \u00e0 une base de donn\u00e9es. Elles sont similaires aux tables des bases de donn\u00e9es relationnelles.<\/p>\n<p>Les collections sont toutefois beaucoup plus flexibles. D&rsquo;une part, elles ne d\u00e9pendent pas d&rsquo;un sch\u00e9ma. Deuxi\u00e8mement, les documents ne doivent pas n\u00e9cessairement \u00eatre du m\u00eame type de donn\u00e9es !<\/p>\n<p>Pour afficher une liste des collections qui appartiennent \u00e0 une base de donn\u00e9es, utilisez la commande <code>listCollections<\/code>.<\/p>\n<h3>Pipelines d&rsquo;agr\u00e9gation<\/h3>\n<p>Vous pouvez utiliser ce framework pour agr\u00e9ger plusieurs op\u00e9rateurs et expressions. Il est flexible car il vous permet de traiter, de transformer et d&rsquo;analyser des donn\u00e9es de toute structure.<\/p>\n<p>Pour cette raison, MongoDB permet des flux de donn\u00e9es rapides et des fonctionnalit\u00e9s \u00e0 travers 150 op\u00e9rateurs et expressions. Il dispose \u00e9galement de plusieurs \u00e9tapes, comme l&rsquo;\u00e9tape d&rsquo;union, qui rassemble de mani\u00e8re flexible les r\u00e9sultats de plusieurs collections.<\/p>\n<h3>Index<\/h3>\n<p>Vous pouvez indexer n&rsquo;importe quel champ d&rsquo;un document MongoDB pour augmenter son efficacit\u00e9 et am\u00e9liorer la vitesse des requ\u00eates. L&rsquo;indexation permet de gagner du temps en parcourant l&rsquo;index pour limiter les documents inspect\u00e9s. N&rsquo;est-ce pas bien mieux que de lire chaque document de la collection ?<\/p>\n<p>Vous pouvez utiliser diverses strat\u00e9gies d&rsquo;indexation, notamment des index compos\u00e9s sur plusieurs champs. Par exemple, disons que vous avez plusieurs documents contenant le pr\u00e9nom et le nom de l&#8217;employ\u00e9 dans des champs s\u00e9par\u00e9s. Si vous souhaitez que le pr\u00e9nom et le nom soient retourn\u00e9s, vous pouvez cr\u00e9er un index qui inclut \u00e0 la fois \u00ab Nom \u00bb et \u00ab Pr\u00e9nom \u00bb. Ce serait bien mieux que d&rsquo;avoir un index sur \u00ab Nom \u00bb et un autre sur \u00ab Pr\u00e9nom \u00bb.<\/p>\n<p>Vous pouvez utiliser des outils comme Performance Advisor pour mieux comprendre quelle requ\u00eate pourrait b\u00e9n\u00e9ficier des index.<\/p>\n<h3>Sharding<\/h3>\n<p>Le sharding r\u00e9partit un ensemble de donn\u00e9es unique entre plusieurs bases de donn\u00e9es. Cet ensemble de donn\u00e9es peut ensuite \u00eatre stock\u00e9 sur plusieurs machines pour augmenter la capacit\u00e9 de stockage totale d&rsquo;un syst\u00e8me. En effet, il divise les grands ensembles de donn\u00e9es en petits morceaux et les stocke dans diff\u00e9rents n\u0153uds de donn\u00e9es.<\/p>\n<p>MongoDB partage les donn\u00e9es au niveau de la collection, en distribuant les documents d&rsquo;une collection \u00e0 travers les shards d&rsquo;un cluster. Cela garantit l&rsquo;\u00e9volutivit\u00e9 en permettant \u00e0 l&rsquo;architecture de g\u00e9rer les plus grandes applications.<\/p>\n<h2>Comment cr\u00e9er une base de donn\u00e9es MongoDB<\/h2>\n<p>Vous devez d&rsquo;abord installer le bon paquetage MongoDB adapt\u00e9 \u00e0 votre syst\u00e8me d&rsquo;exploitation. Rendez-vous sur la page <a href=\"https:\/\/www.mongodb.com\/try\/download\/community\">T\u00e9l\u00e9charger MongoDB Community Server<\/a>. Parmi les options disponibles, s\u00e9lectionnez la derni\u00e8re \u00ab version \u00bb, le format du \u00ab paquet \u00bb comme fichier zip et la \u00ab plateforme \u00bb comme votre syst\u00e8me d&rsquo;exploitation, puis cliquez sur \u00ab T\u00e9l\u00e9charger \u00bb comme illustr\u00e9 ci-dessous :<\/p>\n<figure id=\"attachment_134838\" aria-describedby=\"caption-attachment-134838\" style=\"width: 594px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134838 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/MongoDB-Community-Server-Download-Process-1.png\" alt=\"Processus de t\u00e9l\u00e9chargement de MongoDB Community Server\" width=\"594\" height=\"814\"><figcaption id=\"caption-attachment-134838\" class=\"wp-caption-text\">Processus de t\u00e9l\u00e9chargement de MongoDB Community Server. (Source de l&rsquo;image : <a href=\"https:\/\/www.mongodb.com\/try\/download\/community2\">serveur communautaire MongoDB<\/a>)<\/figcaption><\/figure>\n<p>Le processus est assez simple, vous aurez donc MongoDB install\u00e9 dans votre syst\u00e8me en un rien de temps !<\/p>\n<p>Une fois l&rsquo;installation termin\u00e9e, ouvrez votre invite de commande et saisissez <code>mongod -version<\/code> pour la v\u00e9rifier. Si vous n&rsquo;obtenez pas le r\u00e9sultat suivant et que vous voyez plut\u00f4t une s\u00e9rie d&rsquo;erreurs, vous devrez peut-\u00eatre r\u00e9installer le syst\u00e8me :<\/p>\n<figure id=\"attachment_134839\" aria-describedby=\"caption-attachment-134839\" style=\"width: 507px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134839 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Verifying-MongoDB-Version.png\" alt=\"V\u00e9rification de la version de MongoDB\" width=\"507\" height=\"287\"><figcaption id=\"caption-attachment-134839\" class=\"wp-caption-text\">V\u00e9rification de la version de MongoDB. (Image source : <a href=\"https:\/\/www.configserverfirewall.com\/mongodb\/check-mongodb-version\/\">configserverfirewall<\/a>)<\/figcaption><\/figure>\n<h3>Utilisation du shell MongoDB<\/h3>\n<p>Avant de commencer, assurez-vous que :<\/p>\n<ul>\n<li>Votre client dispose de Transport Layer Security et se trouve sur votre <a href=\"https:\/\/docs.atlas.mongodb.com\/security\/ip-access-list\/\">liste d&rsquo;IP autoris\u00e9es<\/a>.<\/li>\n<li>Vous disposez d&rsquo;un compte utilisateur et d&rsquo;un mot de passe sur le cluster MongoDB souhait\u00e9.<\/li>\n<li>Vous avez install\u00e9 MongoDB sur votre appareil.<\/li>\n<\/ul>\n<h4>\u00c9tape 1 : Acc\u00e9dez au shell MongoDB<\/h4>\n<p>D\u00e9marrez le serveur MongoDB en suivant les instructions de chaque syst\u00e8me d&rsquo;exploitation. Pour Windows, saisissez la commande suivante. Pour les autres syst\u00e8mes d&rsquo;exploitation, reportez-vous \u00e0 la documentation de MongoDB.<\/p>\n<pre><code class=\"language-markdown\">net start MongoDB<\/code><\/pre>\n<p>Ceci devrait donner la sortie suivante :<\/p>\n<figure id=\"attachment_134840\" aria-describedby=\"caption-attachment-134840\" style=\"width: 512px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134840 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/MongoDB-Server-Initialization.png\" alt=\"Utiliser le serveur MongoDB\" width=\"512\" height=\"179\"><figcaption id=\"caption-attachment-134840\" class=\"wp-caption-text\">Utiliser le serveur MongoDB (Source de l&rsquo;image : <a href=\"https:\/\/www.c-sharpcorner.com\/article\/configure-a-windows-service-for-mongodb\/\">c-sharpcorner<\/a>)<\/figcaption><\/figure>\n<p>La commande pr\u00e9c\u00e9dente a initialis\u00e9 le serveur MongoDB. Pour l&rsquo;ex\u00e9cuter, nous devrions saisir <code>mongo<\/code> dans l&rsquo;invite de commande.<\/p>\n<figure id=\"attachment_134843\" aria-describedby=\"caption-attachment-134843\" style=\"width: 897px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134843 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Running-MongoDB-Server-2.png\" alt=\"Utilisez l'interpr\u00e9teur de commandes MongoDB\" width=\"897\" height=\"343\"><figcaption id=\"caption-attachment-134843\" class=\"wp-caption-text\">Utilisez l&rsquo;interpr\u00e9teur de commandes MongoDB (Image source : <a href=\"https:\/\/www.bmc.com\/blogs\/mongodb-create-database\/\">bmc<\/a>)<\/figcaption><\/figure>\n<p>Ici, dans le shell MongoDB, nous pouvons ex\u00e9cuter des commandes pour cr\u00e9er des bases de donn\u00e9es, ins\u00e9rer des donn\u00e9es, modifier des donn\u00e9es, \u00e9mettre des commandes administratives et supprimer des donn\u00e9es.<\/p>\n<h4>\u00c9tape 2 : Cr\u00e9ez votre base de donn\u00e9es<\/h4>\n<p>Contrairement aux bases de donn\u00e9es relationnelles courantes, MongoDB n&rsquo;a pas de commande de cr\u00e9ation de base de donn\u00e9es. Au lieu de cela, il existe un mot-cl\u00e9 appel\u00e9 <code>use<\/code> qui permet de basculer vers une base de donn\u00e9es sp\u00e9cifi\u00e9e. Si la base de donn\u00e9es n&rsquo;existe pas, il cr\u00e9era une nouvelle base de donn\u00e9es, sinon, il \u00e9tablira un lien avec la base de donn\u00e9es existante.<\/p>\n<p>Par exemple, pour lancer une base de donn\u00e9es appel\u00e9e \u00ab Company \u00bb, saisissez :<\/p>\n<pre><code class=\"language-markdown\">use Company<\/code><\/pre>\n<figure id=\"attachment_134845\" aria-describedby=\"caption-attachment-134845\" style=\"width: 1378px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134845 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Creating-Database-in-MongoDB-1.png\" alt=\"Cr\u00e9ation d'une base de donn\u00e9es dans MongoDB.\" width=\"1378\" height=\"547\"><figcaption id=\"caption-attachment-134845\" class=\"wp-caption-text\">Cr\u00e9ation d&rsquo;une base de donn\u00e9es dans MongoDB.<\/figcaption><\/figure>\n<p>Vous pouvez saisir <code>db<\/code> pour confirmer la base de donn\u00e9es que vous venez de cr\u00e9er dans votre syst\u00e8me. Si la nouvelle base de donn\u00e9es que vous avez cr\u00e9\u00e9e s&rsquo;affiche, vous vous \u00eates bien connect\u00e9 \u00e0 celle-ci.<\/p>\n<p>Si vous voulez v\u00e9rifier les bases de donn\u00e9es existantes, saisissez <code>show dbs<\/code> et cela vous donnera toutes les bases de donn\u00e9es de votre syst\u00e8me :<\/p>\n<figure id=\"attachment_134847\" aria-describedby=\"caption-attachment-134847\" style=\"width: 1369px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134847 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Show-Databases-in-MongoDB-1.png\" alt=\"Affichage des bases de donn\u00e9es dans MongoDB.\" width=\"1369\" height=\"489\"><figcaption id=\"caption-attachment-134847\" class=\"wp-caption-text\">Affichage des bases de donn\u00e9es dans MongoDB.<\/figcaption><\/figure>\n<p>Par d\u00e9faut, l&rsquo;installation de MongoDB cr\u00e9e les bases de donn\u00e9es admin, config et locale.<\/p>\n<p>Avez-vous remarqu\u00e9 que la base de donn\u00e9es que nous avons cr\u00e9\u00e9e n&rsquo;est pas affich\u00e9e ? C&rsquo;est parce que nous n&rsquo;avons pas encore enregistr\u00e9 de valeurs dans la base de donn\u00e9es ! Nous aborderons l&rsquo;insertion dans la section sur la gestion des bases de donn\u00e9es.<\/p>\n<h3>Utilisation de l&rsquo;interface utilisateur Atlas<\/h3>\n<p>Vous pouvez \u00e9galement commencer par utiliser le service de base de donn\u00e9es de MongoDB, Atlas. Bien que vous deviez payer pour acc\u00e9der \u00e0 certaines fonctionnalit\u00e9s d&rsquo;Atlas, la plupart des fonctionnalit\u00e9s de la base de donn\u00e9es sont disponibles avec le volet gratuit. Les fonctionnalit\u00e9s du volet gratuit sont plus que suffisantes pour cr\u00e9er une base de donn\u00e9es MongoDB.<\/p>\n<p>Avant de commencer, assurez-vous que :<\/p>\n<ol>\n<li>Votre IP est sur la liste d&rsquo;autorisation.<\/li>\n<li>Vous avez un compte d&rsquo;utilisateur et un mot de passe sur le cluster MongoDB que vous souhaitez utiliser.<\/li>\n<\/ol>\n<p>Pour cr\u00e9er une base de donn\u00e9es MongoDB avec AtlasUI, ouvrez une fen\u00eatre de navigateur et connectez-vous \u00e0 <a href=\"https:\/\/cloud.mongodb.com\/\">https:\/\/cloud.mongodb.com<\/a>. \u00c0 partir de la page de votre cluster, cliquez sur <strong>Parcourir les collections<\/strong>. S&rsquo;il n&rsquo;y a pas de bases de donn\u00e9es dans le cluster, vous pouvez cr\u00e9er votre base de donn\u00e9es en cliquant sur le bouton <strong>Ajouter mes propres donn\u00e9es<\/strong>.<\/p>\n<p>L&rsquo;invite vous demandera de fournir un nom de base de donn\u00e9es et de collection. Une fois que vous les avez nomm\u00e9s, cliquez sur <strong>Cr\u00e9er<\/strong>, et le tour est jou\u00e9 ! Vous pouvez maintenant saisir de nouveaux documents ou vous connecter \u00e0 la base de donn\u00e9es \u00e0 l&rsquo;aide de pilotes.<\/p>\n<h2>Gestion de votre base de donn\u00e9es MongoDB<\/h2>\n<p>Dans cette section, nous allons passer en revue quelques moyens astucieux de g\u00e9rer efficacement votre base de donn\u00e9es MongoDB. Vous pouvez le faire soit en utilisant la boussole MongoDB, soit par le biais de collections.<\/p>\n<h3>Utilisation des collections<\/h3>\n<p>Alors que les bases de donn\u00e9es relationnelles poss\u00e8dent des tables bien d\u00e9finies avec des types de donn\u00e9es et des colonnes sp\u00e9cifiques, NoSQL dispose de collections au lieu de tables. Ces collections n&rsquo;ont aucune structure, et les documents peuvent varier &#8211; vous pouvez avoir diff\u00e9rents types de donn\u00e9es et champs sans devoir correspondre au format d&rsquo;un autre document dans la m\u00eame collection.<\/p>\n<p>Pour faire une d\u00e9monstration, cr\u00e9ons une collection appel\u00e9e \u00ab Employee \u00bb et ajoutons-y un document :<\/p>\n<pre><code class=\"language-markdown\">db.Employee.insert(\n  {\n   \t\"Employeename\" : \"Chris\",\n   \t\"EmployeeDepartment\" : \"Sales\"\n  }\n)<\/code><\/pre>\n<p>Si l&rsquo;insertion est r\u00e9ussie, elle renverra <code>WriteResult({ \"nInserted\" : 1 })<\/code>:<\/p>\n<figure id=\"attachment_134848\" aria-describedby=\"caption-attachment-134848\" style=\"width: 1366px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134848 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Successful-Insertion-in-MongoDB.png\" alt=\"Insertion r\u00e9ussie dans MongoDB.\" width=\"1366\" height=\"484\"><figcaption id=\"caption-attachment-134848\" class=\"wp-caption-text\">Insertion r\u00e9ussie dans MongoDB.<\/figcaption><\/figure>\n<p>Ici, \u00ab db \u00bb fait r\u00e9f\u00e9rence \u00e0 la base de donn\u00e9es actuellement connect\u00e9e. \u00ab Employee \u00bb est la collection nouvellement cr\u00e9\u00e9e sur la base de donn\u00e9es de l&rsquo;entreprise.<\/p>\n<p>Nous n&rsquo;avons pas d\u00e9fini de cl\u00e9 primaire ici car MongoDB cr\u00e9e automatiquement un champ de cl\u00e9 primaire appel\u00e9 \u00ab _id \u00bb et lui attribue une valeur par d\u00e9faut.<\/p>\n<p>Ex\u00e9cutez la commande ci-dessous pour consulter la collection au format JSON :<\/p>\n<pre><code class=\"language-markdown\">db.Employee.find().forEach(printjson)<\/code><\/pre>\n<p>Sortie :<\/p>\n<pre><code class=\"language-markdown\">{\n  \"_id\" : ObjectId(\"63151427a4dd187757d135b8\"),\n  \"Employeename\" : \"Chris\",\n  \"EmployeeDepartment\" : \"Sales\"\n}<\/code><\/pre>\n<p>Bien que la valeur \u00ab _id \u00bb soit attribu\u00e9e automatiquement, vous pouvez modifier la valeur de la cl\u00e9 primaire par d\u00e9faut. Cette fois, nous allons ins\u00e9rer un autre document dans la base de donn\u00e9es \u00ab Employee \u00bb, avec la valeur \u00ab _id \u00bb comme \u00ab 1 \u00bb :<\/p>\n<pre><code class=\"language-markdown\">db.Employee.insert(\n  {  \n   \t\"_id\" : 1,\n   \t\"EmployeeName\" : \"Ava\",\n   \t\"EmployeeDepartment\" : \"Public Relations\"\n  }\n)<\/code><\/pre>\n<p>En ex\u00e9cutant la commande <code>db.Employee.find().forEach(printjson)<\/code>, nous obtenons le r\u00e9sultat suivant :<\/p>\n<figure id=\"attachment_134851\" aria-describedby=\"caption-attachment-134851\" style=\"width: 1764px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134851 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Primary-Key-for-Documents-in-Collection-1.png\" alt=\"Documents dans la collection avec leur cl\u00e9 primaire.\" width=\"1764\" height=\"694\"><figcaption id=\"caption-attachment-134851\" class=\"wp-caption-text\">Documents dans la collection avec leur cl\u00e9 primaire.<\/figcaption><\/figure>\n<p>Dans le r\u00e9sultat ci-dessus, la valeur \u00ab _id \u00bb pour \u00ab Ava \u00bb est d\u00e9finie sur \u00ab 1 \u00bb au lieu de se voir attribuer une valeur automatiquement.<\/p>\n<p>Maintenant que nous avons r\u00e9ussi \u00e0 ajouter des valeurs dans la base de donn\u00e9es, nous pouvons v\u00e9rifier si elle appara\u00eet sous les bases de donn\u00e9es existantes dans notre syst\u00e8me en utilisant la commande suivante :<\/p>\n<pre><code class=\"language-markdown\">show dbs<\/code><\/pre>\n<figure id=\"attachment_134852\" aria-describedby=\"caption-attachment-134852\" style=\"width: 1714px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134852 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/List-of-Databases.png\" alt=\"Affichage de la liste des bases de donn\u00e9es.\" width=\"1714\" height=\"460\"><figcaption id=\"caption-attachment-134852\" class=\"wp-caption-text\">Affichage de la liste des bases de donn\u00e9es.<\/figcaption><\/figure>\n<p>Et voil\u00e0 ! Vous avez r\u00e9ussi \u00e0 cr\u00e9er une base de donn\u00e9es dans votre syst\u00e8me !<\/p>\n<h3>Utilisation de MongoDB Compass<\/h3>\n<p>Bien que nous puissions travailler avec les serveurs MongoDB \u00e0 partir du shell Mongo, cela peut parfois \u00eatre fastidieux. Vous pourriez en faire l&rsquo;exp\u00e9rience dans un environnement de production.<\/p>\n<p>Cependant, il existe un outil de compas (nomm\u00e9 \u00e0 juste titre Compass) cr\u00e9\u00e9 par MongoDB qui peut vous faciliter la t\u00e2che. Il dispose d&rsquo;une meilleure interface graphique et de fonctionnalit\u00e9s suppl\u00e9mentaires telles que la visualisation des donn\u00e9es, le profilage des performances et l&rsquo;acc\u00e8s CRUD (create, read, update, delete) aux donn\u00e9es, aux bases de donn\u00e9es et aux collections.<\/p>\n<p>Vous pouvez t\u00e9l\u00e9charger l&rsquo;<a href=\"https:\/\/www.mongodb.com\/docs\/compass\/current\/install\/\">IDE Compass<\/a> pour votre syst\u00e8me d&rsquo;exploitation et l&rsquo;installer gr\u00e2ce \u00e0 son processus simple.<\/p>\n<p>Ensuite, ouvrez l&rsquo;application et cr\u00e9ez une connexion avec le serveur en collant la cha\u00eene de connexion. Si vous ne la trouvez pas, vous pouvez cliquer sur <strong>Remplir les champs de connexion individuellement<\/strong>. Si vous n&rsquo;avez pas modifi\u00e9 le num\u00e9ro de port lors de l&rsquo;installation de MongoDB, cliquez simplement sur le bouton de connexion, et vous y \u00eates ! Sinon, entrez simplement les valeurs que vous avez d\u00e9finies et cliquez sur <strong>Connecter<\/strong>.<\/p>\n<figure id=\"attachment_134854\" aria-describedby=\"caption-attachment-134854\" style=\"width: 1384px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134854 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/New-Connection-Window-in-MongoDB-1.png\" alt=\"Fen\u00eatre Nouvelle connexion dans MongoDB\" width=\"1384\" height=\"535\"><figcaption id=\"caption-attachment-134854\" class=\"wp-caption-text\">Fen\u00eatre Nouvelle connexion dans MongoDB. (Image source : <a href=\"https:\/\/www.mongodb.com\/docs\/compass\/current\/connect\/\">mongodb<\/a>)<\/figcaption><\/figure>\n<p>Ensuite, fournissez le nom d&rsquo;h\u00f4te, le port et l&rsquo;authentification dans la fen\u00eatre Nouvelle connexion.<\/p>\n<p>Dans MongoDB Compass, vous pouvez cr\u00e9er une base de donn\u00e9es et ajouter sa premi\u00e8re collection simultan\u00e9ment. Voici comment proc\u00e9der :<\/p>\n<ol>\n<li>Cliquez sur <strong>Cr\u00e9er une base de donn\u00e9es<\/strong> pour ouvrir l&rsquo;invite.<\/li>\n<li>Saisissez le nom de la base de donn\u00e9es et sa premi\u00e8re collection.<\/li>\n<li>Cliquez sur <strong>Cr\u00e9er une base de donn\u00e9es<\/strong>.<\/li>\n<\/ol>\n<p>Vous pouvez ins\u00e9rer d&rsquo;autres documents dans votre base de donn\u00e9es en cliquant sur le nom de votre base de donn\u00e9es, puis en cliquant sur le nom de la collection pour voir l&rsquo;onglet <strong>Documents<\/strong>. Vous pouvez ensuite cliquer sur le bouton <strong>Ajouter des donn\u00e9es<\/strong> pour ins\u00e9rer un ou plusieurs documents dans votre collection.<\/p>\n<p>Lorsque vous ajoutez vos documents, vous pouvez les saisir un par un ou sous forme de documents multiples dans un tableau. Si vous ajoutez plusieurs documents, assurez-vous que ces documents s\u00e9par\u00e9s par des virgules sont plac\u00e9s entre crochets. Par exemple :<\/p>\n<pre><code class=\"language-markdown\">{ _id: 1, item: { name: \"apple\", code: \"123\" }, qty: 15, tags: [ \"A\", \"B\", \"C\" ] },\n{ _id: 2, item: { name: \"banana\", code: \"123\" }, qty: 20, tags: [ \"B\" ] },\n{ _id: 3, item: { name: \"spinach\", code: \"456\" }, qty: 25, tags: [ \"A\", \"B\" ] },\n{ _id: 4, item: { name: \"lentils\", code: \"456\" }, qty: 30, tags: [ \"B\", \"A\" ] },\n{ _id: 5, item: { name: \"pears\", code: \"000\" }, qty: 20, tags: [ [ \"A\", \"B\" ], \"C\" ] },\n{ _id: 6, item: { name: \"strawberry\", code: \"123\" }, tags: [ \"B\" ] }<\/code><\/pre>\n<p>Enfin, cliquez sur <strong>Ins\u00e9rer<\/strong> pour ajouter les documents \u00e0 votre collection. Voici \u00e0 quoi ressemblerait le corps d&rsquo;un document :<\/p>\n<pre><code class=\"language-markdown\">{\n  \"StudentID\" : 1\n  \"StudentName\" : \"JohnDoe\"\n}<\/code><\/pre>\n<p>Ici, les noms des champs sont \u00ab StudentID \u00bb et \u00ab StudentName \u00bb. Les valeurs des champs sont respectivement \u00ab 1 \u00bb et \u00ab JohnDoe \u00bb.<\/p>\n<h3>Commandes utiles<\/h3>\n<p>Vous pouvez g\u00e9rer ces collections gr\u00e2ce aux commandes de gestion des r\u00f4les et de gestion des utilisateurs.<\/p>\n<h4>Commandes de gestion des utilisateurs<\/h4>\n<p>Les commandes de gestion des utilisateurs MongoDB contiennent des commandes qui se rapportent \u00e0 l&rsquo;utilisateur. Nous pouvons cr\u00e9er, mettre \u00e0 jour et supprimer les utilisateurs \u00e0 l&rsquo;aide de ces commandes.<\/p>\n<h5>dropUser<\/h5>\n<p>Cette commande supprime un seul utilisateur de la base de donn\u00e9es sp\u00e9cifi\u00e9e. Voici la syntaxe :<\/p>\n<pre><code class=\"language-markdown\">db.dropUser(username, writeConcern)<\/code><\/pre>\n<p>Ici, <code>username<\/code> est un champ pr\u00e9-requis qui sp\u00e9cifie le nom de l&rsquo;utilisateur \u00e0 retirer de la base de donn\u00e9es. Le champ facultatif <code>writeConcern<\/code> contient le niveau de pr\u00e9occupation en \u00e9criture pour l&rsquo;op\u00e9ration de retrait. Le niveau de pr\u00e9occupation en \u00e9criture peut \u00eatre d\u00e9termin\u00e9 par le champ facultatif <code>writeConcern<\/code>.<\/p>\n<p>Avant de supprimer un utilisateur qui a le r\u00f4le <code>userAdminAnyDatabase<\/code>, assurez-vous qu&rsquo;il y a au moins un autre utilisateur avec des privil\u00e8ges d&rsquo;administration d&rsquo;utilisateur.<\/p>\n<p>Dans cet exemple, nous allons abandonner l&rsquo;utilisateur \u00ab user26 \u00bb dans la base de donn\u00e9es de test :<\/p>\n<pre><code class=\"language-markdown\">use test\ndb.dropUser(\"user26\", {w: \"majority\", wtimeout: 4000})<\/code><\/pre>\n<p>Sortie :<\/p>\n<pre><code class=\"language-markdown\">&gt; db.dropUser(\"user26\", {w: \"majority\", wtimeout: 4000});\ntrue<\/code><\/pre>\n<h5>createUser<\/h5>\n<p>Cette commande cr\u00e9e un nouvel utilisateur pour la base de donn\u00e9es sp\u00e9cifi\u00e9e comme suit :<\/p>\n<pre><code class=\"language-markdown\">db.createUser(user, writeConcern)<\/code><\/pre>\n<p>Ici, <code>user<\/code> est un champ obligatoire qui contient le document avec les informations d&rsquo;authentification et d&rsquo;acc\u00e8s sur l&rsquo;utilisateur \u00e0 cr\u00e9er. Le champ facultatif <code>writeConcern<\/code> contient le niveau de pr\u00e9occupation en \u00e9criture pour l&rsquo;op\u00e9ration de cr\u00e9ation. Le niveau de pr\u00e9occupation en \u00e9criture peut \u00eatre d\u00e9termin\u00e9 par le champ facultatif <code>writeConcern<\/code>.<\/p>\n<p><code>createUser<\/code> renverra une erreur de duplication d&rsquo;utilisateur si l&rsquo;utilisateur existe d\u00e9j\u00e0 dans la base de donn\u00e9es.<\/p>\n<p>Vous pouvez cr\u00e9er un nouvel utilisateur dans la base de donn\u00e9es de test comme suit :<\/p>\n<pre><code class=\"language-markdown\">use test\ndb.createUser(\n  {\n    user: \"user26\",\n    pwd: \"myuser123\",\n    roles: [ \"readWrite\" ]  \n  }\n);<\/code><\/pre>\n<p>La sortie est la suivante :<\/p>\n<pre><code class=\"language-markdown\">Successfully added user: { \"user\" : \"user26\", \"roles\" : [ \"readWrite\", \"dbAdmin\" ] }<\/code><\/pre>\n<h5>grantRolesToUser<\/h5>\n<p>Vous pouvez utiliser cette commande pour accorder des r\u00f4les suppl\u00e9mentaires \u00e0 un utilisateur. Pour l&rsquo;utiliser, vous devez garder \u00e0 l&rsquo;esprit la syntaxe suivante :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    grantRolesToUser: \"&lt;user&gt;\",\n    roles: [ &lt;roles&gt; ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Vous pouvez sp\u00e9cifier \u00e0 la fois des r\u00f4les d\u00e9finis par l&rsquo;utilisateur et des r\u00f4les int\u00e9gr\u00e9s dans les r\u00f4les mentionn\u00e9s ci-dessus. Si vous voulez sp\u00e9cifier un r\u00f4le qui existe dans la m\u00eame base de donn\u00e9es o\u00f9 s&rsquo;ex\u00e9cute <code>grantRolesToUser<\/code>, vous pouvez soit sp\u00e9cifier le r\u00f4le avec un document, comme mentionn\u00e9 ci-dessous :<\/p>\n<pre><code class=\"language-markdown\">{ role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" }<\/code><\/pre>\n<p>Ou, vous pouvez simplement sp\u00e9cifier le r\u00f4le avec le nom du r\u00f4le. Par exemple :<\/p>\n<pre><code class=\"language-markdown\">\"readWrite\"<\/code><\/pre>\n<p>Si vous voulez sp\u00e9cifier le r\u00f4le qui est pr\u00e9sent dans une base de donn\u00e9es diff\u00e9rente, vous devrez sp\u00e9cifier le r\u00f4le avec un document diff\u00e9rent.<\/p>\n<p>Pour accorder un r\u00f4le sur une base de donn\u00e9es, vous avez besoin de l&rsquo;action <code>grantRole<\/code> sur la base de donn\u00e9es sp\u00e9cifi\u00e9e.<\/p>\n<p>Voici un exemple pour vous donner une id\u00e9e claire. Prenons l&rsquo;exemple d&rsquo;un utilisateur productUser00 dans la base de donn\u00e9es des produits avec les r\u00f4les suivants :<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  }\n]<\/code><\/pre>\n<p>L&rsquo;op\u00e9ration <code>grantRolesToUser<\/code> fournit \u00e0 \u00ab\u00a0productUser00\u00a0\u00bb le r\u00f4le <code>readWrite<\/code> sur la base de donn\u00e9es des stocks et le r\u00f4le de lecture sur la base de donn\u00e9es des produits :<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand({\n  grantRolesToUser: \"productUser00\",\n  roles: [\n    { role: \"readWrite\", db: \"stock\"},\n    \"read\"\n  ],\n  writeConcern: { w: \"majority\" , wtimeout: 2000 }\n})<\/code><\/pre>\n<p>L&rsquo;utilisateur productUser00 de la base de donn\u00e9es des produits poss\u00e8de maintenant les r\u00f4les suivants :<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  },\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  },\n  {\n    \"role\" : \"read\",\n    \"db\" : \"products\"\n  }\n]<\/code><\/pre>\n<h5>usersInfo<\/h5>\n<p>Vous pouvez utiliser la commande <code>usersInfo<\/code> pour renvoyer des informations sur un ou plusieurs utilisateurs. Voici la syntaxe :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    usersInfo: &lt;various&gt;,\n    showCredentials: &lt;Boolean&gt;,\n    showCustomData: &lt;Boolean&gt;,\n    showPrivileges: &lt;Boolean&gt;,\n    showAuthenticationRestrictions: &lt;Boolean&gt;,\n    filter: &lt;document&gt;,\n    comment: &lt;any&gt; \n  }\n)\n{ usersInfo: &lt;various&gt; }<\/code><\/pre>\n<p>En termes d&rsquo;acc\u00e8s, les utilisateurs peuvent toujours consulter leurs propres informations. Pour consulter les informations d&rsquo;un autre utilisateur, l&rsquo;utilisateur qui ex\u00e9cute la commande doit avoir des privil\u00e8ges qui incluent l&rsquo;action <code>viewUser<\/code> sur la base de donn\u00e9es de l&rsquo;autre utilisateur.<\/p>\n<p>En ex\u00e9cutant la commande <code>userInfo<\/code>, vous pouvez obtenir les informations suivantes en fonction des options sp\u00e9cifi\u00e9es :<\/p>\n<pre><code class=\"language-markdown\">{\n  \"users\" : [\n    {\n      \"_id\" : \"&lt;db&gt;.&lt;username&gt;\",\n      \"userId\" : &lt;UUID&gt;, \/\/ Starting in MongoDB 4.0.9\n      \"user\" : \"&lt;username&gt;\",\n      \"db\" : \"&lt;db&gt;\",\n      \"mechanisms\" : [ ... ],  \/\/ Starting in MongoDB 4.0\n      \"customData\" : &lt;document&gt;,\n      \"roles\" : [ ... ],\n      \"credentials\": { ... }, \/\/ only if showCredentials: true\n      \"inheritedRoles\" : [ ... ],  \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"inheritedPrivileges\" : [ ... ], \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"inheritedAuthenticationRestrictions\" : [ ] \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"authenticationRestrictions\" : [ ... ] \/\/ only if showAuthenticationRestrictions: true\n    },\n  ],\n  \"ok\" : 1\n} <\/code><\/pre>\n<p>Maintenant que vous avez une id\u00e9e g\u00e9n\u00e9rale de ce que vous pouvez accomplir avec la commande <code>usersInfo<\/code>, la prochaine question \u00e9vidente qui pourrait surgir est la suivante : quelles commandes seraient utiles pour examiner des utilisateurs sp\u00e9cifiques et plusieurs utilisateurs ?<\/p>\n<p>Voici deux exemples pratiques pour illustrer cette question :<br \/>\nPour consulter les privil\u00e8ges et informations sp\u00e9cifiques \u00e0 des utilisateurs particuliers, mais pas les informations d&rsquo;identification, pour un utilisateur \u00ab Anthony \u00bb d\u00e9fini dans la base de donn\u00e9es \u00ab office \u00bb, ex\u00e9cutez la commande suivante :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    usersInfo:  { user: \"Anthony\", db: \"office\" },\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<p>Si vous voulez regarder un utilisateur dans la base de donn\u00e9es actuelle, vous ne pouvez mentionner l&rsquo;utilisateur que par son nom. Par exemple, si vous \u00eates dans la base de donn\u00e9es \u00ab home \u00bb et qu&rsquo;un utilisateur nomm\u00e9 \u00ab \u00ab\u00a0Timothy \u00bb existe dans la base de donn\u00e9es \u00ab home \u00bb, vous pouvez ex\u00e9cuter la commande suivante :<\/p>\n<pre><code class=\"language-markdown\">db.getSiblingDB(\"home\").runCommand(\n  {\n    usersInfo:  \"Timothy\",\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<p>Ensuite, vous pouvez utiliser un tableau si vous souhaitez consulter les informations de plusieurs utilisateurs. Vous pouvez soit inclure les champs facultatifs <code>showCredentials<\/code> et <code>showPrivileges<\/code>, soit choisir de ne pas les inclure. Voici \u00e0 quoi ressemblerait la commande :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand({\nusersInfo: [ { user: \"Anthony\", db: \"office\" }, { user: \"Timothy\", db: \"home\" } ],\n  showPrivileges: true\n})<\/code><\/pre>\n<h5>revokeRolesFromUser<\/h5>\n<p>Vous pouvez utiliser la commande <code>revokeRolesFromUser<\/code> pour supprimer un ou plusieurs r\u00f4les d&rsquo;un utilisateur sur la base de donn\u00e9es o\u00f9 les r\u00f4les sont pr\u00e9sents. La commande <code>revokeRolesFromUser<\/code> a la syntaxe suivante :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokeRolesFromUser: \"&lt;user&gt;\",\n    roles: [\n      { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" } | \"&lt;role&gt;\",\n    ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Dans la syntaxe mentionn\u00e9e ci-dessus, vous pouvez sp\u00e9cifier \u00e0 la fois des r\u00f4les d\u00e9finis par l&rsquo;utilisateur et des r\u00f4les int\u00e9gr\u00e9s dans le champ <code>roles<\/code>. Comme pour la commande <code>grantRolesToUser<\/code>, vous pouvez sp\u00e9cifier le r\u00f4le que vous souhaitez r\u00e9voquer dans un document ou utiliser son nom.<\/p>\n<p>Pour ex\u00e9cuter avec succ\u00e8s la commande <code>revokeRolesFromUser<\/code>, vous devez disposer de l&rsquo;action <code>revokeRole<\/code> sur la base de donn\u00e9es sp\u00e9cifi\u00e9e.<\/p>\n<p>Voici un exemple pour illustrer ce point. L&rsquo;entit\u00e9 <code>productUser00<\/code> de la base de donn\u00e9es des produits avait les r\u00f4les suivants :<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  },\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  },\n  {\n    \"role\" : \"read\",\n    \"db\" : \"products\"\n  }\n]<\/code><\/pre>\n<p>La commande suivante <code>revokeRolesFromUser<\/code> supprimera deux des r\u00f4les de l&rsquo;utilisateur : le r\u00f4le \u00ab read \u00bb de <code>products<\/code> et le r\u00f4le <code>assetsWriter<\/code> de la base de donn\u00e9es \u00ab assets \u00bb :<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand( { revokeRolesFromUser: \"productUser00\",\n  roles: [\n    { role: \"AssetsWriter\", db: \"assets\" },\n    \"read\"\n  ],\n  writeConcern: { w: \"majority\" }\n} )<\/code><\/pre>\n<p>L&rsquo;utilisateur \u00ab productUser00 \u00bb de la base de donn\u00e9es des produits n&rsquo;a maintenant plus qu&rsquo;un seul r\u00f4le :<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  }\n]<\/code><\/pre>\n<h4>Commandes de gestion des r\u00f4les<\/h4>\n<p>Les r\u00f4les accordent aux utilisateurs l&rsquo;acc\u00e8s aux ressources. Plusieurs r\u00f4les int\u00e9gr\u00e9s peuvent \u00eatre utilis\u00e9s par les administrateurs pour contr\u00f4ler l&rsquo;acc\u00e8s \u00e0 un syst\u00e8me MongoDB. Si les r\u00f4les ne couvrent pas les privil\u00e8ges souhait\u00e9s, vous pouvez m\u00eame aller plus loin en cr\u00e9ant de nouveaux r\u00f4les dans une base de donn\u00e9es particuli\u00e8re.<\/p>\n<h5>dropRole<\/h5>\n<p>Avec la commande <code>dropRole<\/code>, vous pouvez supprimer un r\u00f4le d\u00e9fini par l&rsquo;utilisateur de la base de donn\u00e9es sur laquelle vous ex\u00e9cutez la commande. Pour ex\u00e9cuter cette commande, utilisez la syntaxe suivante :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    dropRole: \"&lt;role&gt;\",\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Pour une ex\u00e9cution r\u00e9ussie, vous devez disposer de l&rsquo;action <code>dropRole<\/code> sur la base de donn\u00e9es sp\u00e9cifi\u00e9e. Les op\u00e9rations suivantes supprimeraient le r\u00f4le <code>writeTags<\/code> de la base de donn\u00e9es \u00ab products \u00bb :<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand(\n  {\n    dropRole: \"writeTags\",\n    writeConcern: { w: \"majority\" }\n  }\n)<\/code><\/pre>\n<h5>createRole<\/h5>\n<p>Vous pouvez utiliser la commande <code>createRole<\/code> pour cr\u00e9er un r\u00f4le et sp\u00e9cifier ses privil\u00e8ges. Le r\u00f4le s&rsquo;appliquera \u00e0 la base de donn\u00e9es sur laquelle vous choisissez d&rsquo;ex\u00e9cuter la commande. La commande <code>createRole<\/code> renverrait une erreur de r\u00f4le dupliqu\u00e9 si le r\u00f4le existe d\u00e9j\u00e0 dans la base de donn\u00e9es.<\/p>\n<p>Pour ex\u00e9cuter cette commande, suivez la syntaxe donn\u00e9e :<\/p>\n<pre><code class=\"language-markdown\">db.adminCommand(\n  {\n    createRole: \"&lt;new role&gt;\",\n    privileges: [\n      { resource: { &lt;resource&gt; }, actions: [ \"&lt;action&gt;\", ... ] },\n    ],\n    roles: [\n      { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" } | \"&lt;role&gt;\",\n    ],\n    authenticationRestrictions: [\n      {\n        clientSource: [\"&lt;IP&gt;\" | \"&lt;CIDR range&gt;\", ...],\n        serverAddress: [\"&lt;IP&gt;\" | \"&lt;CIDR range&gt;\", ...]\n      },\n    ],\n    writeConcern: &lt;write concern document&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Les privil\u00e8ges d&rsquo;un r\u00f4le s&rsquo;appliquent \u00e0 la base de donn\u00e9es dans laquelle le r\u00f4le a \u00e9t\u00e9 cr\u00e9\u00e9. Le r\u00f4le peut h\u00e9riter des privil\u00e8ges d&rsquo;autres r\u00f4les dans sa base de donn\u00e9es. Par exemple, un r\u00f4le cr\u00e9\u00e9 sur la base de donn\u00e9es \u00ab admin \u00bb peut inclure des privil\u00e8ges qui s&rsquo;appliquent soit \u00e0 un cluster, soit \u00e0 toutes les bases de donn\u00e9es. Il peut \u00e9galement h\u00e9riter de privil\u00e8ges de r\u00f4les pr\u00e9sents dans d&rsquo;autres bases de donn\u00e9es.<\/p>\n<p>Pour cr\u00e9er un r\u00f4le dans une base de donn\u00e9es, vous devez disposer de deux \u00e9l\u00e9ments :<\/p>\n<ol>\n<li>L&rsquo;action <code>grantRole<\/code> sur cette base de donn\u00e9es pour mentionner les privil\u00e8ges du nouveau r\u00f4le ainsi que pour mentionner les r\u00f4les dont il doit h\u00e9riter.<\/li>\n<li>L&rsquo;action <code>createRole<\/code> sur cette ressource de base de donn\u00e9es.<\/li>\n<\/ol>\n<p>La commande suivante <code>createRole<\/code> cr\u00e9era un r\u00f4le <code>clusterAdmin<\/code> sur la base de donn\u00e9es des utilisateurs :<\/p>\n<pre><code class=\"language-markdown\">db.adminCommand({ createRole: \"clusterAdmin\",\n  privileges: [\n    { resource: { cluster: true }, actions: [ \"addShard\" ] },\n    { resource: { db: \"config\", collection: \"\" }, actions: [ \"find\", \"remove\" ] },\n    { resource: { db: \"users\", collection: \"usersCollection\" }, actions: [ \"update\", \"insert\" ] },\n    { resource: { db: \"\", collection: \"\" }, actions: [ \"find\" ] }\n  ],\n  roles: [\n    { role: \"read\", db: \"user\" }\n  ],\n  writeConcern: { w: \"majority\" , wtimeout: 5000 }\n})<\/code><\/pre>\n<h5>grantRolesToRole<\/h5>\n<p>Avec la commande <code>grantRolesToRole<\/code>, vous pouvez accorder des r\u00f4les \u00e0 un r\u00f4le d\u00e9fini par l&rsquo;utilisateur. La commande <code>grantRolesToRole<\/code> affecterait les r\u00f4les sur la base de donn\u00e9es o\u00f9 la commande est ex\u00e9cut\u00e9e.<\/p>\n<p>Cette commande <code>grantRolesToRole<\/code> a la syntaxe suivante :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    grantRolesToRole: \"&lt;role&gt;\",\n    roles: [\n     { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" },\n    ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Les privil\u00e8ges d&rsquo;acc\u00e8s sont similaires \u00e0 ceux de la commande <code>grantRolesToUser<\/code> \u2014 vous avez besoin d&rsquo;une action <code>grantRole<\/code> sur une base de donn\u00e9es pour la bonne ex\u00e9cution de la commande.<\/p>\n<p>Dans l&rsquo;exemple suivant, vous pouvez utiliser la commande <code>grantRolesToRole<\/code> pour mettre \u00e0 jour le r\u00f4le <code>productsReader<\/code> dans la base de donn\u00e9es \u00ab\u00a0produits\u00a0\u00bb afin d&rsquo;h\u00e9riter des privil\u00e8ges du r\u00f4le <code>productsWriter<\/code>:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand(\n  { \n    grantRolesToRole: \"productsReader\",\n    roles: [\n      \"productsWriter\"\n    ],\n    writeConcern: { w: \"majority\" , wtimeout: 5000 }\n  }\n)<\/code><\/pre>\n<h5>revokePrivilegesFromRole<\/h5>\n<p>Vous pouvez utiliser <code>revokePrivilegesFromRole<\/code> pour supprimer les privil\u00e8ges sp\u00e9cifi\u00e9s du r\u00f4le d\u00e9fini par l&rsquo;utilisateur sur la base de donn\u00e9es o\u00f9 la commande est ex\u00e9cut\u00e9e. Pour une ex\u00e9cution correcte, vous devez garder \u00e0 l&rsquo;esprit la syntaxe suivante :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokePrivilegesFromRole: \"&lt;role&gt;\",\n    privileges: [\n      { resource: { &lt;resource&gt; }, actions: [ \"&lt;action&gt;\", ... ] },\n    ],\n    writeConcern: &lt;write concern document&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Pour r\u00e9voquer un privil\u00e8ge, \u00ab resource document \u00bb doit correspondre au champ \u00ab resource \u00bb de ce privil\u00e8ge. Le champ \u00ab actions \u00bb peut \u00eatre soit une correspondance exacte, soit un sous-ensemble.<\/p>\n<p>Par exemple, consid\u00e9rons le r\u00f4le <code>manageRole<\/code> dans la base de donn\u00e9es des produits avec les privil\u00e8ges suivants qui sp\u00e9cifient la base de donn\u00e9es \u00ab managers \u00bb comme ressource :<\/p>\n<pre><code class=\"language-markdown\">{\n  \"resource\" : {\n    \"db\" : \"managers\",\n    \"collection\" : \"\"\n  },\n  \"actions\" : [\n    \"insert\",\n    \"remove\"\n  ]\n}<\/code><\/pre>\n<p>Vous ne pouvez pas r\u00e9voquer les actions \u00ab insert \u00bb ou \u00ab remove \u00bb d&rsquo;une seule collection dans la base de donn\u00e9es \u00ab managers \u00bb. Les op\u00e9rations suivantes ne provoquent aucun changement dans le r\u00f4le :<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges: [\n      {\n        resource : {\n          db : \"managers\",\n          collection : \"kiosks\"\n        },\n        actions : [\n          \"insert\",\n          \"remove\"\n        ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges:\n      [\n        {\n          resource : {\n          db : \"managers\",\n          collection : \"kiosks\"\n        },\n        actions : [\n          \"insert\"\n        ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<p>Pour r\u00e9voquer les actions \u00ab insert \u00bb et\/ou \u00ab remove \u00bb du r\u00f4le <code>manageRole<\/code>, vous devez faire correspondre exactement le document de ressource. Par exemple, l&rsquo;op\u00e9ration suivante r\u00e9voque uniquement l&rsquo;action \u00ab remove \u00bb du privil\u00e8ge existant :<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges:\n      [\n        {\n          resource : {\n            db : \"managers\",\n            collection : \"\"\n        },\n        actions : [ \"remove\" ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<p>L&rsquo;op\u00e9ration suivante retire plusieurs privil\u00e8ges du r\u00f4le \u00ab executive \u00bb dans la base de donn\u00e9es managers :<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"executive\",\n    privileges: [\n      {\n        resource: { db: \"managers\", collection: \"\" },\n        actions: [ \"insert\", \"remove\", \"find\" ]\n      },\n      {\n        resource: { db: \"managers\", collection: \"partners\" },\n        actions: [ \"update\" ]\n      }\n    ],\n    writeConcern: { w: \"majority\" }\n    }\n)<\/code><\/pre>\n<h5>rolesInfo<\/h5>\n<p>La commande <code>rolesInfo<\/code> renvoie des informations sur les privil\u00e8ges et l&rsquo;h\u00e9ritage pour les r\u00f4les sp\u00e9cifi\u00e9s, y compris les r\u00f4les int\u00e9gr\u00e9s et d\u00e9finis par l&rsquo;utilisateur. Vous pouvez \u00e9galement utiliser la commande <code>rolesInfo<\/code> pour r\u00e9cup\u00e9rer tous les r\u00f4les ayant une port\u00e9e sur une base de donn\u00e9es.<\/p>\n<p>Pour une ex\u00e9cution correcte, suivez cette syntaxe :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    rolesInfo: { role: &lt;name&gt;, db: &lt;db&gt; },\n    showPrivileges: &lt;Boolean&gt;,\n    showBuiltinRoles: &lt;Boolean&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Pour retourner les informations d&rsquo;un r\u00f4le de la base de donn\u00e9es actuelle, vous pouvez sp\u00e9cifier son nom comme suit :<\/p>\n<pre><code class=\"language-markdown\">{ rolesInfo: \"&lt;rolename&gt;\" }<\/code><\/pre>\n<p>Pour renvoyer des informations sur un r\u00f4le \u00e0 partir d&rsquo;une autre base de donn\u00e9es, vous pouvez mentionner le r\u00f4le avec un document qui mentionne le r\u00f4le et la base de donn\u00e9es :<\/p>\n<pre><code class=\"language-markdown\">{ rolesInfo: { role: \"&lt;rolename&gt;\", db: \"&lt;database&gt;\" } }<\/code><\/pre>\n<p>Par exemple, la commande suivante renvoie les informations d&rsquo;h\u00e9ritage de r\u00f4le pour le r\u00f4le executive d\u00e9fini dans la base de donn\u00e9es managers :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n      rolesInfo: { role: \"executive\", db: \"managers\" }\n   }\n)<\/code><\/pre>\n<p>La commande suivante renvoie les informations sur l&rsquo;h\u00e9ritage des r\u00f4les : <code>accountManager<\/code> sur la base de donn\u00e9es sur laquelle la commande est ex\u00e9cut\u00e9e :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n      rolesInfo: \"accountManager\"\n   }\n)<\/code><\/pre>\n<p>La commande suivante renverra \u00e0 la fois les privil\u00e8ges et l&rsquo;h\u00e9ritage des r\u00f4les pour le r\u00f4le \u00ab executive \u00bb tel que d\u00e9fini sur la base de donn\u00e9es managers :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n     rolesInfo: { role: \"executive\", db: \"managers\" },\n     showPrivileges: true\n   }\n)<\/code><\/pre>\n<p>Pour mentionner plusieurs r\u00f4les, vous pouvez utiliser un tableau. Vous pouvez \u00e9galement mentionner chaque r\u00f4le dans le tableau sous forme de cha\u00eene ou de document.<\/p>\n<p>Vous ne devez utiliser une cha\u00eene que si le r\u00f4le existe dans la base de donn\u00e9es sur laquelle la commande est ex\u00e9cut\u00e9e :<\/p>\n<pre><code class=\"language-markdown\">{\n  rolesInfo: [\n    \"&lt;rolename&gt;\",\n    { role: \"&lt;rolename&gt;\", db: \"&lt;database&gt;\" },\n  ]\n}<\/code><\/pre>\n<p>Par exemple, la commande suivante renverra des informations pour trois r\u00f4les sur trois bases de donn\u00e9es diff\u00e9rentes :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n    rolesInfo: [\n      { role: \"executive\", db: \"managers\" },\n      { role: \"accounts\", db: \"departments\" },\n      { role: \"administrator\", db: \"products\" }\n    ]\n  }\n)<\/code><\/pre>\n<p>Vous pouvez obtenir \u00e0 la fois les privil\u00e8ges et l&rsquo;h\u00e9ritage des r\u00f4les comme suit :<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    rolesInfo: [\n      { role: \"executive\", db: \"managers\" },\n      { role: \"accounts\", db: \"departments\" },\n      { role: \"administrator\", db: \"products\" }\n    ],\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<h2>Int\u00e9grer des documents MongoDB pour de meilleures performances<\/h2>\n<p>Les bases de donn\u00e9es de documents comme MongoDB vous permettent de d\u00e9finir votre sch\u00e9ma en fonction de vos besoins. Pour cr\u00e9er des sch\u00e9mas optimaux dans MongoDB, vous pouvez imbriquer les documents. Ainsi, au lieu de faire correspondre votre application \u00e0 un mod\u00e8le de donn\u00e9es, vous pouvez construire un mod\u00e8le de donn\u00e9es qui correspond \u00e0 votre cas d&rsquo;utilisation.<\/p>\n<p>Les documents imbriqu\u00e9s vous permettent de <a href=\"https:\/\/kinqsta.com\/fr\/blog\/comment-sauvegarder-base-de-donnees-mysql-avec-phpmyadmin\/\">stocker des donn\u00e9es similaires<\/a> auxquelles vous acc\u00e9dez ensemble. Lors de la conception de sch\u00e9mas pour MongoDB, il est recommand\u00e9 d&rsquo;int\u00e9grer des documents par d\u00e9faut. Utilisez les jointures et les r\u00e9f\u00e9rences c\u00f4t\u00e9 base de donn\u00e9es ou c\u00f4t\u00e9 application uniquement lorsqu&rsquo;elles sont utiles.<\/p>\n<p>Assurez-vous que la charge de travail peut r\u00e9cup\u00e9rer un document aussi souvent que n\u00e9cessaire. Dans le m\u00eame temps, le document doit \u00e9galement disposer de toutes les donn\u00e9es dont il a besoin. Il s&rsquo;agit d&rsquo;un \u00e9l\u00e9ment essentiel pour les performances exceptionnelles de votre application.<\/p>\n<p>Ci-dessous, vous trouverez quelques mod\u00e8les diff\u00e9rents pour int\u00e9grer des documents :<\/p>\n<h3>Mod\u00e8le de document int\u00e9gr\u00e9<\/h3>\n<p>Vous pouvez l&rsquo;utiliser pour int\u00e9grer des sous-structures complexes dans les documents avec lesquels elles sont utilis\u00e9es. L&rsquo;int\u00e9gration de donn\u00e9es connect\u00e9es dans un seul document peut r\u00e9duire le nombre d&rsquo;op\u00e9rations de lecture n\u00e9cessaires pour obtenir des donn\u00e9es. En r\u00e8gle g\u00e9n\u00e9rale, vous devez structurer votre sch\u00e9ma de mani\u00e8re \u00e0 ce que votre application re\u00e7oive toutes ses informations requises en une seule op\u00e9ration de lecture. Par cons\u00e9quent, la r\u00e8gle \u00e0 garder \u00e0 l&rsquo;esprit ici est que <strong>ce qui est utilis\u00e9 ensemble doit \u00eatre stock\u00e9 ensemble<\/strong>.<\/p>\n<h3>Mod\u00e8le de sous-ensemble int\u00e9gr\u00e9<\/h3>\n<p>Le mod\u00e8le de sous-ensemble int\u00e9gr\u00e9 est un cas hybride. Vous l&rsquo;utiliserez pour une collection s\u00e9par\u00e9e d&rsquo;une longue liste d&rsquo;\u00e9l\u00e9ments li\u00e9s, o\u00f9 vous pouvez garder certains de ces \u00e9l\u00e9ments \u00e0 port\u00e9e de main pour les afficher.<\/p>\n<p>Voici un exemple qui r\u00e9pertorie les critiques de films :<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne()\n{   \n  _id: 321475,   \n  title: \"The Dark Knight\"\n}  \n&gt; db.review.find({movie_id: 321475})\n{   \n  _id: 264579,   \n  movie_id: 321475,   \n  stars: 4   \n  text: \"Amazing\"   \n}\n{   \n  _id: 375684,   \n  movie_id: 321475,   \n  stars:5,   \n  text: \"Mindblowing\"\n}<\/code><\/pre>\n<p>Imaginez un millier de critiques similaires, mais vous ne pr\u00e9voyez d&rsquo;afficher que les deux plus r\u00e9centes lorsque vous montrez un film. Dans ce sc\u00e9nario, il est logique de stocker ce sous-ensemble sous forme de liste dans le document du film :<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne({_id: 321475})   \n{   \n  _id: 321475,   \n  title: \"The Dark Knight\",   \n  recent_reviews: [   \n    {_id: 264579, stars: 4, text: \"Amazing\"},   \n    {_id: 375684, stars: 5, text: \"Mindblowing\"}   \n  ]   \n}<\/code><\/pre>\n<p>En termes simples, si vous acc\u00e9dez r\u00e9guli\u00e8rement \u00e0 un sous-ensemble d&rsquo;articles similaires, assurez-vous de l&rsquo;int\u00e9grer.<\/p>\n<h3>Acc\u00e8s ind\u00e9pendant<\/h3>\n<p>Vous pouvez vouloir stocker des sous-documents dans leur collection pour les s\u00e9parer de leur collection m\u00e8re.<\/p>\n<p>Par exemple, prenez la gamme de produits d&rsquo;une entreprise. Si l&rsquo;entreprise vend un petit ensemble de produits, vous pourriez vouloir les stocker dans le document de l&rsquo;entreprise. Mais si vous voulez les r\u00e9utiliser dans plusieurs entreprises ou y acc\u00e9der directement par leur unit\u00e9 de gestion des stocks (UGS), vous voudrez \u00e9galement les stocker dans leur collection.<\/p>\n<p>Si vous manipulez ou acc\u00e9dez \u00e0 une entit\u00e9 de mani\u00e8re ind\u00e9pendante, cr\u00e9ez une collection pour la stocker s\u00e9par\u00e9ment pour une meilleure pratique.<\/p>\n<h3>Listes non d\u00e9limit\u00e9es<\/h3>\n<p>Le stockage de courtes listes d&rsquo;informations connexes dans leur document pr\u00e9sente un inconv\u00e9nient. Si votre liste continue \u00e0 s&rsquo;allonger de mani\u00e8re illimit\u00e9e, vous ne devriez pas la placer dans un seul document. En effet, vous ne seriez pas en mesure de la supporter tr\u00e8s longtemps.<\/p>\n<p>Il y a deux raisons \u00e0 cela. Premi\u00e8rement, MongoDB a une limite sur la taille d&rsquo;un document unique. Deuxi\u00e8mement, si vous acc\u00e9dez au document \u00e0 une fr\u00e9quence trop \u00e9lev\u00e9e, vous obtiendrez des r\u00e9sultats n\u00e9gatifs dus \u00e0 une utilisation incontr\u00f4l\u00e9e de la m\u00e9moire.<\/p>\n<p>En d&rsquo;autres termes, si une liste commence \u00e0 cro\u00eetre de mani\u00e8re illimit\u00e9e, cr\u00e9ez une collection pour la stocker s\u00e9par\u00e9ment.<\/p>\n<h3>Mod\u00e8le de r\u00e9f\u00e9rence \u00e9tendu<\/h3>\n<p>Le mod\u00e8le de r\u00e9f\u00e9rence \u00e9tendu est semblable au mod\u00e8le de sous-ensemble. Il optimise \u00e9galement les informations auxquelles vous acc\u00e9dez r\u00e9guli\u00e8rement pour les stocker sur le document.<\/p>\n<p>Ici, au lieu d&rsquo;une liste, il est exploit\u00e9 lorsqu&rsquo;un document fait r\u00e9f\u00e9rence \u00e0 un autre qui est pr\u00e9sent dans la m\u00eame collection. En m\u00eame temps, il stocke \u00e9galement certains champs de cet autre document pour un acc\u00e8s facile.<\/p>\n<p>Par exemple :<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne({_id: 245434})\n{   \n  _id: 245434,   \n  title: \"Mission Impossible 4 - Ghost Protocol\",   \n  studio_id: 924935,   \n  studio_name: \"Paramount Pictures\"   \n}<\/code><\/pre>\n<p>Comme vous pouvez le voir, \u00ab studio_id \u00bb est stock\u00e9 afin que vous puissiez rechercher plus d&rsquo;informations sur le studio qui a cr\u00e9\u00e9 le film. Mais le nom du studio est \u00e9galement copi\u00e9 dans ce document pour plus de simplicit\u00e9.<\/p>\n<p>Pour int\u00e9grer r\u00e9guli\u00e8rement des informations provenant de documents modifi\u00e9s, pensez \u00e0 mettre \u00e0 jour les documents dans lesquels vous avez copi\u00e9 ces informations lorsqu&rsquo;elles sont modifi\u00e9es. En d&rsquo;autres termes, si vous acc\u00e9dez r\u00e9guli\u00e8rement \u00e0 certains champs d&rsquo;un document r\u00e9f\u00e9renc\u00e9, int\u00e9grez-les.<\/p>\n<h2>Comment surveiller MongoDB<\/h2>\n<p>Vous pouvez utiliser des <a href=\"https:\/\/kinqsta.com\/fr\/blog\/outils-apm\/\">outils de surveillance<\/a> comme <a href=\"https:\/\/kinqsta.com\/fr\/outil-apm\/\">Kinsta APM<\/a> pour d\u00e9boguer les longs appels API, les requ\u00eates de base de donn\u00e9es lentes, les longues requ\u00eates URL externes, pour n&rsquo;en citer que quelques-uns. Vous pouvez m\u00eame exploiter les commandes pour am\u00e9liorer les performances de la base de donn\u00e9es. Vous pouvez \u00e9galement les utiliser pour inspecter la <a href=\"https:\/\/kinqsta.com\/fr\/blog\/reparer-base-de-donnees-wordpress\/\">sant\u00e9 de vos instances de base de donn\u00e9es<\/a>.<\/p>\n<h3>Pourquoi devriez-vous surveiller les bases de donn\u00e9es MongoDB ?<\/h3>\n<p>Un aspect essentiel de la <a href=\"https:\/\/kinqsta.com\/fr\/mykinsta\/\">planification de l&rsquo;administration des bases de donn\u00e9es<\/a> est la surveillance des performances et de la sant\u00e9 de votre cluster. MongoDB Atlas prend en charge la majorit\u00e9 des efforts d&rsquo;administration gr\u00e2ce \u00e0 ses capacit\u00e9s de tol\u00e9rance aux pannes\/de mise \u00e0 l&rsquo;\u00e9chelle.<\/p>\n<p>Malgr\u00e9 cela, les utilisateurs doivent savoir comment suivre les clusters. Ils doivent \u00e9galement savoir comment mettre \u00e0 l&rsquo;\u00e9chelle ou ajuster ce dont ils ont besoin avant d&rsquo;\u00eatre confront\u00e9s \u00e0 une crise.<\/p>\n<p>En surveillant les bases de donn\u00e9es MongoDB, vous pouvez :<\/p>\n<ul>\n<li>Observer l&rsquo;utilisation des ressources.<\/li>\n<li>Comprendre la capacit\u00e9 actuelle de votre base de donn\u00e9es.<\/li>\n<li>R\u00e9agir et d\u00e9tecter les probl\u00e8mes en temps r\u00e9el pour am\u00e9liorer votre pile d&rsquo;applications.<\/li>\n<li>Observer la pr\u00e9sence de probl\u00e8mes de performance et de comportements anormaux.<\/li>\n<li>Vous aligner sur vos exigences en mati\u00e8re de gouvernance\/protection des donn\u00e9es et d&rsquo;accords de niveau de service (SLA).<\/li>\n<\/ul>\n<h3>Mesures cl\u00e9s \u00e0 surveiller<\/h3>\n<p>Lors de la surveillance de MongoDB, il y a quatre aspects cl\u00e9s que vous devez garder \u00e0 l&rsquo;esprit :<\/p>\n<h4>1. Mesures mat\u00e9rielles de MongoDB<\/h4>\n<p>Voici les principales mesures de surveillance du mat\u00e9riel :<\/p>\n<h5>Processeur normalis\u00e9<\/h5>\n<p>Il est d\u00e9fini comme le pourcentage de temps pass\u00e9 par le CPU sur le logiciel d&rsquo;application qui maintient le processus MongoDB.<\/p>\n<p>Vous pouvez le mettre \u00e0 l&rsquo;\u00e9chelle dans une fourchette de 0 \u00e0 100 % en le divisant par le nombre de c\u0153urs du CPU. Il inclut le CPU exploit\u00e9 par des modules tels que le noyau et l&rsquo;utilisateur.<\/p>\n<p>Un CPU de noyau \u00e9lev\u00e9 pourrait indiquer un \u00e9puisement du CPU via les op\u00e9rations du syst\u00e8me d&rsquo;exploitation. Mais l&rsquo;utilisateur li\u00e9 aux op\u00e9rations MongoDB peut \u00eatre la cause principale de l&rsquo;\u00e9puisement du CPU.<\/p>\n<h5>CPU syst\u00e8me normalis\u00e9<\/h5>\n<p>Il s&rsquo;agit du pourcentage de temps que le CPU a pass\u00e9 sur les appels syst\u00e8me desservant ce processus MongoDB. Vous pouvez le mettre \u00e0 l&rsquo;\u00e9chelle dans une fourchette de 0 \u00e0 100 % en le divisant par le nombre de c\u0153urs de CPU. Il couvre \u00e9galement le CPU utilis\u00e9 par des modules tels que iowait, user, kernel, steal, etc.<\/p>\n<p>Un CPU utilisateur ou un noyau \u00e9lev\u00e9 pourrait indiquer un \u00e9puisement du CPU par des op\u00e9rations MongoDB (logiciel). Un iowait \u00e9lev\u00e9 pourrait \u00eatre li\u00e9 \u00e0 un \u00e9puisement du stockage entra\u00eenant un \u00e9puisement du CPU.<\/p>\n<h5>IOPS du disque<\/h5>\n<p>L&rsquo;IOPS du disque est la moyenne des op\u00e9rations d&rsquo;E\/S consomm\u00e9es par seconde sur la partition du disque de MongoDB.<\/p>\n<h5>Latence du disque<\/h5>\n<p>Il s&rsquo;agit de la latence de lecture et d&rsquo;\u00e9criture de la partition de disque en millisecondes dans MongoDB. Des valeurs \u00e9lev\u00e9es (&gt;500ms) montrent que la couche de stockage peut affecter les performances de MongoDB.<\/p>\n<h5>M\u00e9moire syst\u00e8me<\/h5>\n<p>Utilisez la m\u00e9moire syst\u00e8me pour d\u00e9crire les octets de m\u00e9moire physique utilis\u00e9s par rapport \u00e0 l&rsquo;espace libre disponible.<\/p>\n<p>La m\u00e9trique disponible indique approximativement le nombre d&rsquo;octets de m\u00e9moire syst\u00e8me disponibles. Vous pouvez l&rsquo;utiliser pour ex\u00e9cuter de nouvelles applications, sans swapping.<\/p>\n<h5>Espace disque libre<\/h5>\n<p>Il s&rsquo;agit du nombre total d&rsquo;octets d&rsquo;espace disque libre sur la partition du disque de MongoDB. L&rsquo;Atlas MongoDB offre des capacit\u00e9s de mise \u00e0 l&rsquo;\u00e9chelle automatique bas\u00e9es sur cette mesure.<\/p>\n<h5>Utilisation de l&rsquo;espace de pagination<\/h5>\n<p>Vous pouvez exploiter un graphique d&rsquo;utilisation du swap pour d\u00e9crire la quantit\u00e9 de m\u00e9moire plac\u00e9e sur le dispositif de swap. Une m\u00e9trique \u00e9lev\u00e9e dans ce graphique montre que le swap est utilis\u00e9. Cela montre que la m\u00e9moire est sous-provisionn\u00e9e pour la charge de travail actuelle.<\/p>\n<h4>Mesures de connexion et de fonctionnement du cluster MongoDB<\/h4>\n<p>Voici les principales mesures pour les m\u00e9triques d&rsquo;op\u00e9ration et de connexion :<\/p>\n<h5>Temps d&rsquo;ex\u00e9cution des op\u00e9rations<\/h5>\n<p>La dur\u00e9e moyenne des op\u00e9rations (op\u00e9rations d&rsquo;\u00e9criture et de lecture) ex\u00e9cut\u00e9es sur la p\u00e9riode d&rsquo;\u00e9chantillonnage s\u00e9lectionn\u00e9e.<\/p>\n<h5>Compteurs d&rsquo;op\u00e9rations<\/h5>\n<p>C&rsquo;est le taux moyen d&rsquo;op\u00e9rations ex\u00e9cut\u00e9es par seconde sur la p\u00e9riode d&rsquo;\u00e9chantillonnage s\u00e9lectionn\u00e9e. Le graphique\/la mesure Opcounters montre la r\u00e9partition des op\u00e9rations entre les types d&rsquo;op\u00e9rations et la v\u00e9locit\u00e9 pour l&rsquo;instance.<\/p>\n<h5>Connexions<\/h5>\n<p>Cette mesure fait r\u00e9f\u00e9rence au nombre de connexions ouvertes \u00e0 l&rsquo;instance. Des pics ou des nombres \u00e9lev\u00e9s peuvent indiquer une strat\u00e9gie de connexion sous-optimale, soit du c\u00f4t\u00e9 du serveur non r\u00e9actif, soit du c\u00f4t\u00e9 du client.<\/p>\n<h5>Ciblage des requ\u00eates et ex\u00e9cuteurs de requ\u00eates<\/h5>\n<p>Il s&rsquo;agit du taux moyen par seconde sur la p\u00e9riode d&rsquo;\u00e9chantillonnage s\u00e9lectionn\u00e9e de documents num\u00e9ris\u00e9s. Pour les ex\u00e9cuteurs de requ\u00eates, il s&rsquo;agit de l&rsquo;\u00e9valuation du plan de requ\u00eate et des requ\u00eates. Le ciblage des requ\u00eates montre le rapport entre le nombre de documents scann\u00e9s et le nombre de documents retourn\u00e9s.<\/p>\n<p>Un ratio \u00e9lev\u00e9 indique des op\u00e9rations sous-optimales. Ces op\u00e9rations scannent beaucoup de documents pour en renvoyer une plus petite partie.<\/p>\n<h5>Num\u00e9risation et commande<\/h5>\n<p>Il d\u00e9crit le taux moyen par seconde sur la p\u00e9riode d&rsquo;\u00e9chantillonnage de requ\u00eates choisie. Il renvoie des r\u00e9sultats tri\u00e9s qui ne peuvent pas ex\u00e9cuter l&rsquo;op\u00e9ration de tri \u00e0 l&rsquo;aide d&rsquo;un index.<\/p>\n<h5>Files d&rsquo;attente<\/h5>\n<p>Les files d&rsquo;attente peuvent d\u00e9crire le nombre d&rsquo;op\u00e9rations en attente d&rsquo;un verrou, que ce soit en \u00e9criture ou en lecture. Des files d&rsquo;attente \u00e9lev\u00e9es pourraient d\u00e9peindre l&rsquo;existence d&rsquo;une conception de sch\u00e9ma non optimale. Cela pourrait \u00e9galement indiquer des chemins d&rsquo;\u00e9criture conflictuels, poussant une forte concurrence sur les ressources de la base de donn\u00e9es.<\/p>\n<h4>Mesures de r\u00e9plication MongoDB<\/h4>\n<p>Voici les principales mesures pour la surveillance de la r\u00e9plication :<\/p>\n<h5>Fen\u00eatre Oplog de r\u00e9plication<\/h5>\n<p>Cette mesure indique le nombre approximatif d&rsquo;heures disponibles dans l&rsquo;oplog de r\u00e9plication du primaire. Si un secondaire accuse un retard sup\u00e9rieur \u00e0 ce nombre, il ne peut pas suivre et aura besoin d&rsquo;une resynchronisation compl\u00e8te.<\/p>\n<h5>Retard de r\u00e9plication<\/h5>\n<p>Le retard de r\u00e9plication est d\u00e9fini comme le nombre approximatif de secondes pendant lesquelles un n\u0153ud secondaire est en retard sur le primaire dans les op\u00e9rations d&rsquo;\u00e9criture. Un retard de r\u00e9plication \u00e9lev\u00e9 indique que le secondaire a des difficult\u00e9s \u00e0 se r\u00e9pliquer. Cela pourrait avoir un impact sur la latence de votre op\u00e9ration, \u00e9tant donn\u00e9 la pr\u00e9occupation des connexions en lecture\/\u00e9criture.<\/p>\n<h5>Hauteur de r\u00e9plication<\/h5>\n<p>Cette mesure fait r\u00e9f\u00e9rence \u00e0 la diff\u00e9rence entre la fen\u00eatre oplogue de la r\u00e9plication primaire et le retard de r\u00e9plication du secondaire. Si cette valeur va jusqu&rsquo;\u00e0 z\u00e9ro, cela pourrait provoquer le passage d&rsquo;un secondaire en mode RECOVERING.<\/p>\n<h5>Opcounters -repl<\/h5>\n<p>Opcounters -repl est d\u00e9fini comme le taux moyen d&rsquo;op\u00e9rations de r\u00e9plication ex\u00e9cut\u00e9es par seconde pour la p\u00e9riode d&rsquo;\u00e9chantillonnage choisie. Avec l&rsquo;opcounters -graph\/metric, vous pouvez jeter un coup d&rsquo;oeil \u00e0 la v\u00e9locit\u00e9 des op\u00e9rations et \u00e0 la r\u00e9partition des types d&rsquo;op\u00e9rations pour l&rsquo;instance sp\u00e9cifi\u00e9e.<\/p>\n<h5>Oplog Go\/heure<\/h5>\n<p>Ceci est d\u00e9fini comme le taux moyen de gigaoctets d&rsquo;oplog que le primaire g\u00e9n\u00e8re par heure. Des volumes \u00e9lev\u00e9s et inattendus d&rsquo;oplog peuvent indiquer une charge de travail en \u00e9criture tr\u00e8s insuffisante ou un probl\u00e8me de conception de sch\u00e9ma.<\/p>\n<h3>Outils de surveillance des performances de MongoDB<\/h3>\n<p>MongoDB dispose d&rsquo;outils d&rsquo;interface utilisateur int\u00e9gr\u00e9s dans Cloud Manager, Atlas et Ops Manager pour le suivi des performances. Il fournit \u00e9galement quelques commandes et outils ind\u00e9pendants pour examiner des donn\u00e9es plus brutes. Nous allons parler de certains outils que vous pouvez ex\u00e9cuter \u00e0 partir d&rsquo;un h\u00f4te qui a l&rsquo;acc\u00e8s et les r\u00f4les appropri\u00e9s pour v\u00e9rifier votre environnement :<\/p>\n<h4>mongotop<\/h4>\n<p>Vous pouvez exploiter cette commande pour suivre le temps qu&rsquo;une instance MongoDB passe \u00e0 \u00e9crire et lire des donn\u00e9es par collection. Utilisez la syntaxe suivante :<\/p>\n<pre><code class=\"language-markdown\">mongotop &lt;options&gt; &lt;connection-string&gt; &lt;polling-interval in seconds&gt;<\/code><\/pre>\n<h4>rs.status()<\/h4>\n<p>Cette commande renvoie l&rsquo;\u00e9tat de l&rsquo;ensemble de r\u00e9pliques. Elle est ex\u00e9cut\u00e9e du point de vue du membre o\u00f9 la m\u00e9thode est ex\u00e9cut\u00e9e.<\/p>\n<h4>mongostat<\/h4>\n<p>Vous pouvez utiliser la commande <code>mongostat<\/code> pour obtenir un aper\u00e7u rapide de l&rsquo;\u00e9tat de votre instance de serveur MongoDB. Pour un r\u00e9sultat optimal, vous pouvez l&rsquo;utiliser pour surveiller une seule instance pour un \u00e9v\u00e9nement sp\u00e9cifique car elle offre une vue en temps r\u00e9el.<\/p>\n<p>Exploitez cette commande pour surveiller les statistiques de base du serveur telles que les files d&rsquo;attente de verrouillage, la ventilation des op\u00e9rations, les statistiques de m\u00e9moire MongoDB et les connexions\/r\u00e9seau :<\/p>\n<pre><code class=\"language-markdown\">mongostat &lt;options&gt; &lt;connection-string&gt; &lt;polling interval in seconds&gt;<\/code><\/pre>\n<h4>dbStats<\/h4>\n<p>Cette commande renvoie les statistiques de stockage pour une base de donn\u00e9es sp\u00e9cifique, telles que le nombre d&rsquo;index et leur taille, le total des donn\u00e9es de collection par rapport \u00e0 la taille de stockage, et les statistiques li\u00e9es aux collections (nombre de collections et de documents).<\/p>\n<h4>db.serverStatus()<\/h4>\n<p>Vous pouvez exploiter la commande <code>db.serverStatus()<\/code> pour avoir un aper\u00e7u de l&rsquo;\u00e9tat de la base de donn\u00e9es. Elle vous donne un document repr\u00e9sentant les compteurs m\u00e9triques de l&rsquo;instance actuelle. Ex\u00e9cutez cette commande \u00e0 intervalles r\u00e9guliers pour collationner les statistiques sur l&rsquo;instance.<\/p>\n<h4>collStats<\/h4>\n<p>La commande <code>collStats<\/code> collecte des statistiques similaires \u00e0 celles propos\u00e9es par <code>dbStats<\/code> au niveau de la collection. Sa sortie consiste en un compte d&rsquo;objets dans la collection, la quantit\u00e9 d&rsquo;espace disque consomm\u00e9e par la collection, la taille de la collection et des informations concernant ses index pour une collection donn\u00e9e.<\/p>\n<p>Vous pouvez utiliser toutes ces commandes pour offrir des rapports et une surveillance en temps r\u00e9el du serveur de base de donn\u00e9es qui vous permettent de contr\u00f4ler les performances et les erreurs de la base de donn\u00e9es et d&rsquo;aider \u00e0 prendre des d\u00e9cisions \u00e9clair\u00e9es pour affiner une base de donn\u00e9es.<\/p>\n<h2>Comment supprimer une base de donn\u00e9es MongoDB<\/h2>\n<p>Pour supprimer une base de donn\u00e9es que vous avez cr\u00e9\u00e9e dans MongoDB, vous devez vous y connecter via le mot-cl\u00e9 use.<\/p>\n<p>Disons que vous avez cr\u00e9\u00e9 une base de donn\u00e9es nomm\u00e9e \u00ab Engineers \u00bb. Pour vous connecter \u00e0 la base de donn\u00e9es, vous utiliserez la commande suivante :<\/p>\n<pre><code class=\"language-markdown\">use Engineers<\/code><\/pre>\n<p>Ensuite, saisissez <code>db.dropDatabase()<\/code> pour vous d\u00e9barrasser de cette base de donn\u00e9es. Apr\u00e8s ex\u00e9cution, voici le r\u00e9sultat auquel vous pouvez vous attendre :<\/p>\n<pre><code class=\"language-markdown\">{ \"dropped\"  :  \"Engineers\", \"ok\" : 1 }<\/code><\/pre>\n<p>Vous pouvez ex\u00e9cuter la commande <code>showdbs<\/code> pour v\u00e9rifier si la base de donn\u00e9es existe toujours.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Pour tirer le maximum de valeur de MongoDB, vous devez avoir une bonne compr\u00e9hension des principes de base. Il est donc essentiel de conna\u00eetre les bases de donn\u00e9es MongoDB comme sa poche. Pour cela, il faut d&rsquo;abord se familiariser avec les m\u00e9thodes de <a href=\"https:\/\/kinqsta.com\/fr\/devkinsta\/\">cr\u00e9ation d&rsquo;une base de donn\u00e9es<\/a>.<\/p>\n\n<p>Dans cet article, nous avons fait la lumi\u00e8re sur les diff\u00e9rentes m\u00e9thodes que vous pouvez utiliser pour cr\u00e9er une base de donn\u00e9es dans MongoDB, suivies d&rsquo;une description d\u00e9taill\u00e9e de quelques commandes MongoDB astucieuses pour vous permettre de garder le contr\u00f4le de vos bases de donn\u00e9es. Enfin, nous avons termin\u00e9 en discutant de la fa\u00e7on dont vous pouvez tirer parti des documents int\u00e9gr\u00e9s et des outils de surveillance des performances dans MongoDB pour vous assurer que votre flux de travail fonctionne au maximum de son efficacit\u00e9.<\/p>\n<p>Quel est votre avis sur ces commandes MongoDB ? Avons-nous omis un aspect ou une m\u00e9thode que vous auriez aim\u00e9 voir ici ? Faites-nous en part dans les commentaires !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En fonction de vos exigences pour votre logiciel, vous pouvez donner la priorit\u00e9 \u00e0 la flexibilit\u00e9, \u00e0 l&rsquo;\u00e9volutivit\u00e9, aux performances ou \u00e0 la vitesse. Par cons\u00e9quent, &#8230;<\/p>\n","protected":false},"author":117,"featured_media":63073,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[373,746,341,47],"topic":[1020],"class_list":["post-63072","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-database","tag-mongodb","tag-web-development","tag-webdev","topic-outils-developpement-web"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre<\/title>\n<meta name=\"description\" content=\"Pour mieux comprendre MongoDB, vous devez savoir comment cr\u00e9er des bases de donn\u00e9es dans MongoDB, en commen\u00e7ant par la commande MongoDB Create Database.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre\" \/>\n<meta property=\"og:description\" content=\"Pour mieux comprendre MongoDB, vous devez savoir comment cr\u00e9er des bases de donn\u00e9es dans MongoDB, en commen\u00e7ant par la commande MongoDB Create Database.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-08T08:55:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-17T13:43:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Salman Ravoof\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Pour mieux comprendre MongoDB, vous devez savoir comment cr\u00e9er des bases de donn\u00e9es dans MongoDB, en commen\u00e7ant par la commande MongoDB Create Database.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png\" \/>\n<meta name=\"twitter:creator\" content=\"@salmanravoof\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salman Ravoof\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"35 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/\"},\"author\":{\"name\":\"Salman Ravoof\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\"},\"headline\":\"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre\",\"datePublished\":\"2022-11-08T08:55:02+00:00\",\"dateModified\":\"2024-09-17T13:43:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/\"},\"wordCount\":7563,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png\",\"keywords\":[\"database\",\"MongoDB\",\"web development\",\"webdev\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/\",\"name\":\"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png\",\"datePublished\":\"2022-11-08T08:55:02+00:00\",\"dateModified\":\"2024-09-17T13:43:05+00:00\",\"description\":\"Pour mieux comprendre MongoDB, vous devez savoir comment cr\u00e9er des bases de donn\u00e9es dans MongoDB, en commen\u00e7ant par la commande MongoDB Create Database.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Outils de d\u00e9veloppement web\",\"item\":\"https:\/\/kinqsta.com\/fr\/sujets\/outils-developpement-web\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\",\"name\":\"Salman Ravoof\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"caption\":\"Salman Ravoof\"},\"description\":\"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.\",\"sameAs\":[\"https:\/\/salmanravoof.com\",\"https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/\",\"https:\/\/x.com\/salmanravoof\"],\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/author\/salmanravoof\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre","description":"Pour mieux comprendre MongoDB, vous devez savoir comment cr\u00e9er des bases de donn\u00e9es dans MongoDB, en commen\u00e7ant par la commande MongoDB Create Database.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre","og_description":"Pour mieux comprendre MongoDB, vous devez savoir comment cr\u00e9er des bases de donn\u00e9es dans MongoDB, en commen\u00e7ant par la commande MongoDB Create Database.","og_url":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2022-11-08T08:55:02+00:00","article_modified_time":"2024-09-17T13:43:05+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png","type":"image\/png"}],"author":"Salman Ravoof","twitter_card":"summary_large_image","twitter_description":"Pour mieux comprendre MongoDB, vous devez savoir comment cr\u00e9er des bases de donn\u00e9es dans MongoDB, en commen\u00e7ant par la commande MongoDB Create Database.","twitter_image":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png","twitter_creator":"@salmanravoof","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Salman Ravoof","Dur\u00e9e de lecture estim\u00e9e":"35 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/"},"author":{"name":"Salman Ravoof","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987"},"headline":"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre","datePublished":"2022-11-08T08:55:02+00:00","dateModified":"2024-09-17T13:43:05+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/"},"wordCount":7563,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png","keywords":["database","MongoDB","web development","webdev"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/","url":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/","name":"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png","datePublished":"2022-11-08T08:55:02+00:00","dateModified":"2024-09-17T13:43:05+00:00","description":"Pour mieux comprendre MongoDB, vous devez savoir comment cr\u00e9er des bases de donn\u00e9es dans MongoDB, en commen\u00e7ant par la commande MongoDB Create Database.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#primaryimage","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/mongodb-create-database.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/fr\/blog\/creer-base-de-donnees-mongodb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Outils de d\u00e9veloppement web","item":"https:\/\/kinqsta.com\/fr\/sujets\/outils-developpement-web\/"},{"@type":"ListItem","position":3,"name":"Comment cr\u00e9er une base de donn\u00e9es MongoDB : 6 aspects cruciaux \u00e0 conna\u00eetre"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/fr\/#website","url":"https:\/\/kinqsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987","name":"Salman Ravoof","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","caption":"Salman Ravoof"},"description":"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.","sameAs":["https:\/\/salmanravoof.com","https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/","https:\/\/x.com\/salmanravoof"],"url":"https:\/\/kinqsta.com\/fr\/blog\/author\/salmanravoof\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/63072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/comments?post=63072"}],"version-history":[{"count":14,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/63072\/revisions"}],"predecessor-version":[{"id":70013,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/63072\/revisions\/70013"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/translations\/dk"},{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63072\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media\/63073"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media?parent=63072"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/tags?post=63072"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/topic?post=63072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}