Introduction
MongoDB utilise des structures orientées document pour stocker, gérer et traiter les données. Les documents individuels sont organisés en collections, qui à leur tour sont stockées dans des bases de données. Étant donné que le schéma de chaque document n'est pas défini par un schéma statique, les systèmes basés sur des documents offrent plus de flexibilité que les systèmes relationnels composés de tables et d'enregistrements.
Dans ce guide, nous expliquerons comment créer et gérer les structures utilisées par MongoDB pour organiser les données. Nous verrons comment créer et gérer des bases de données, puis comment créer des collections pour contenir des documents similaires ou connexes.
Comment afficher les bases de données existantes
Avant de commencer à créer de nouvelles bases de données, il est utile de se familiariser avec certaines des méthodes fournies par MongoDB pour rechercher des informations sur les bases de données existantes. Cela peut vous aider à comprendre l'état actuel du système avant de commencer à apporter des modifications.
Pour afficher toutes les bases de données du système auxquelles vous avez accès, utilisez le show dbs
méthode :
show dbs
admin 0.000GBconfig 0.000GBlocal 0.000GB
MongoDB répondra avec les noms de toutes les bases de données accessibles sur le système ainsi qu'un résumé de leur espace de stockage actuel.
Pour voir sur quelle base de données vous êtes actuellement configuré pour opérer, utilisez le db.getName()
commande ou son alias abrégé, db
:
db
test
Vous pouvez constater que vous utilisez actuellement une base de données qui n'a pas été répertoriée par le show dbs
commande. En effet, dans MongoDB, tant que vous n'avez pas écrit le premier document dans la base de données, la base de données n'est pas réellement créée. Ainsi, dans l'exemple de sortie ci-dessus, le shell est prêt à fonctionner sur un test
base de données, mais comme elle n'existe pas encore, elle ne sera pas renvoyée par le show dbs
commande.
Pour passer à une autre base de données, vous pouvez utiliser le use
commande :
use admin
switched to db admin
Pour obtenir des informations de base sur votre base de données actuelle, vous pouvez utiliser le db.stats()
méthode :
db.stats()
{ "db" : "admin", "collections" : 3, "views" : 0, "objects" : 4, "avgObjSize" : 278.25, "dataSize" : 1113, "storageSize" : 86016, "indexes" : 5, "indexSize" : 147456, "totalSize" : 233472, "scaleFactor" : 1, "fsUsedSize" : 2876923904, "fsTotalSize" : 25832407040, "ok" : 1}
La sortie affiche des informations sur le nombre de collections dans la base de données, les statistiques de stockage, les informations d'index, etc.
Comment créer des bases de données
MongoDB n'a pas de commande explicite pour créer une nouvelle base de données. Au lieu de cela, comme mentionné précédemment, vous devez plutôt indiquer à MongoDB que vous souhaitez écrire de nouveaux documents dans une nouvelle base de données. Lorsque ces documents seront créés, ils créeront implicitement la base de données.
Pour préparer MongoDB à écrire dans une nouvelle base de données, émettez le use
commande pour passer à une base de données inexistante.
Ici, nous allons configurer MongoDB pour créer une nouvelle base de données appelée playground
:
use playground
switched to db playground
Si vous vérifiez votre base de données actuelle, elle confirmera que le playground
la base de données est actuellement la cible de commandes liées à la base de données :
db
playground
Cependant, comme mentionné précédemment, puisque nous n'avons pas encore créé de documents, la base de données elle-même n'a pas encore été créée :
show dbs
admin 0.000GBconfig 0.000GBlocal 0.000GB
Pour créer réellement la nouvelle base de données, nous devrons d'abord créer quelque chose.
Comment afficher les collections dans une base de données
Dans MongoDB, collections sont des structures utilisées pour regrouper des documents en utilisant le système de catégorisation que vous souhaitez mettre en œuvre. Ils vivent dans des bases de données et stockent des documents.
Vous pouvez voir les collections disponibles dans la base de données que vous utilisez actuellement en utilisant le show collections
méthode.
Ici, nous allons passer à l'admin
base de données qui a quelques collections disponibles pour démontrer :
use adminshow collections
system.rolessystem.userssystem.version
Alternativement, vous pouvez récupérer les mêmes noms de collection dans un tableau en utilisant le db.getCollectionNames()
méthode :
db.getCollectionNames()
[ "system.roles", "system.users", "system.version" ]
Pour afficher des informations supplémentaires sur les collections dans la base de données actuelle, utilisez le db.getCollectionInfos()
méthode :
db.getCollectionInfos()
[ { "name" : "system.roles", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("776b1fd7-6014-4191-b33c-21350b590627") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }, { "name" : "system.users", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("8c824fd1-2150-4413-8fac-0b77d16505e5") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }, { "name" : "system.version", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }]
Vous pouvez également éventuellement transmettre un document à la commande pour filtrer les résultats. Par exemple, si vous souhaitez uniquement voir les informations sur le system.version
collection, vous pouvez taper :
db.getCollectionInfos( { name: "system.version" })
[ { "name" : "system.version", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }]
Pour vérifier le nombre de documents contenus dans une collection, utilisez le db.<collection>.count()
méthode. Par exemple, la commande suivante vérifie le nombre de documents dans le system.users
collecte :
db.system.users.count()
2
Pour afficher les statistiques de base sur les collections de la base de données actuelle, utilisez le db.printCollectionStats()
méthode :
db.printCollectionStats()
La commande peut générer plus d'informations que vous ne pouvez facilement consommer, mais contient, mais est utile dans certains scénarios où vous devez examiner en profondeur les caractéristiques d'une collection.
Comment créer des collections
Pour créer une nouvelle collection, il existe deux options :vous pouvez créer des collections implicitement ou explicitement.
Comme pour les bases de données, MongoDB peut créer automatiquement des collections la première fois qu'un document y est écrit. Cette méthode indique à MongoDB de créer une nouvelle collection en insérant un document dans une collection qui n'existe pas encore.
Par exemple, nous pouvons revenir au playground
base de données qui nous intéressait plus tôt. Une fois que nous sommes dans cet espace de noms, nous pouvons insérer un nouveau document dans une collection en appelant le insert.()
commande sur le nom que nous aimerions utiliser pour la nouvelle collection. Ici, nous pouvons créer un document sur une diapositive dans une nouvelle collection appelée equipment
:
use playgrounddb.equipment.insert({name: "slide"})
switched to db playgroundWriteResult({ "nInserted" : 1 })
La sortie indique qu'un document a été écrit. La commande ci-dessus a effectué trois actions distinctes. Tout d'abord, MongoDB a créé le playground
base de données que nous avions référencée dans notre use
commande. Il a également créé l'equipment
collection dans la base de données puisque nous appelons le insert()
commande sur ce nom de collection. Enfin, il crée le document réel au sein de l'equipment
collection en utilisant l'entrée que nous avons fournie au insert()
commande.
Vous pouvez vérifier que toutes ces actions ont été effectuées avec les commandes suivantes :
show dbsshow collectionsdb.equipment.count()db.equipment.find()
La sortie doit montrer que le playground
base de données fait désormais partie des bases de données listées, que le equipment
collection est répertoriée, qu'il existe un document dans l'equipment
collection, et que le document est le {name: "slide"}
document que nous avons inséré dans la commande.
L'autre option à utiliser pour créer des collections est d'utiliser explicitement le db.createCollection()
méthode. Cela vous permet de créer des collections sans y ajouter de documents.
Par exemple, vous pouvez créer une nouvelle collection dans le playground
base de données appelée maintenance.requests
en tapant :
db.createCollection("maintenance.requests")
{ "ok" : 1 }
Nous pouvons vérifier que la nouvelle collection s'affiche lorsque nous l'interrogeons, mais qu'elle ne contient aucun document :
show collectionsdb.maintenance.requests.count()
equipmentmaintenance.requests0
Le db.createCollection()
La méthode est principalement utile car elle vous permet de spécifier diverses options lors de la création. Par exemple, nous pouvons vouloir créer une collection plafonnée , qui est une collection qui maintient une limite supérieure sur sa taille allouée qu'elle stocke en supprimant son document le plus ancien lorsqu'il est plein.
Pour créer une collection limitée appelée notifications
pouvant stocker au maximum 10240 octets d'informations, vous pouvez appeler :
db.createCollection( "notifications", { capped: true, size: 10240 })
{ "ok" : 1}
Cela créera une notification
limitée collection, que nous pouvons vérifier en tapant :
db.getCollecitonInfos({"options.capped": true})
[ { "name" : "notifications", "type" : "collection", "options" : { "capped" : true, "size" : 10240 }, "info" : { "readOnly" : false, "uuid" : UUID("dff7bfb0-1cfc-4170-ba60-fbb834ac6925") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }]
Comment supprimer des collections
Pour supprimer une collection, vous pouvez utiliser le drop()
méthode sur la collection elle-même.
Par exemple, pour supprimer les notifications
plafonnées collection que nous avons créée, vous pouvez taper :
db.notifications.drop()
true
Vous pouvez vérifier que l'opération a réussi en répertoriant les collections dans la base de données actuelle :
show collections
equipmentmaintenance.requests
Comment supprimer des bases de données
Pour supprimer une base de données entière, appelez le db.dropDatabase()
commande. Cela supprimera la base de données actuelle, alors assurez-vous d'être sur la bonne base de données avant d'exécuter :
use playgrounddb.dropDatabase()
switched to db playground{ "dropped" : "playground", "ok" : 1 }
Si vous consultez la liste des bases de données disponibles, playground
ne s'affiche plus :
show dbs
admin 0.000GBconfig 0.000GBlocal 0.000GB
Comme nous ne sommes pas encore passés à une nouvelle base de données, MongoDB est toujours configuré pour créer un playground
base de données si nous choisissons d'ajouter une nouvelle collection ou un nouveau document. Vous pouvez vérifier cela avec le db
commande :
db
playground
Conclusion
La création et la gestion de bases de données et de collections est une compétence importante lors de l'utilisation de MongoDB. Ces outils d'organisation de base vous permettent de regrouper des documents connexes, d'interroger des sous-ensembles d'informations et de configurer des stratégies d'autorisation pour différents types de données. Se familiariser avec la gestion efficace de ces structures vous permettra de gérer vos données plus efficacement avec moins de surprises.