MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment gérer les bases de données et les collections dans MongoDB


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.