sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan administreres databaser og samlinger i MongoDB


Introduktion

MongoDB bruger dokumentorienterede strukturer til at gemme, administrere og behandle data. Individuelle dokumenter er organiseret i samlinger, som igen gemmes i databaser. Fordi skemaet for hvert dokument ikke er defineret af et statisk skema, tilbyder dokumentbaserede systemer mere fleksibilitet end relationelle systemer, der er sammensat af tabeller og poster.

I denne guide vil vi tale om, hvordan man opretter og administrerer de strukturer, som MongoDB bruger til at organisere data. Vi vil dække, hvordan man opretter og administrerer databaser og derefter, hvordan man laver samlinger til at opbevare lignende eller relaterede dokumenter.



Sådan får du vist eksisterende databaser

Før vi begynder at oprette nye databaser, er det nyttigt at blive bekendt med nogle af de metoder, som MongoDB giver til at finde information om eksisterende databaser. Dette kan hjælpe dig med at forstå den aktuelle tilstand af systemet, før du begynder at foretage ændringer.

For at få vist alle de databaser på systemet, som du har adgang til, skal du bruge show dbs metode:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

MongoDB vil svare med navnene på alle de tilgængelige databaser på systemet samt en oversigt over deres nuværende lagerplads.

Brug db.getName() for at se, hvilken database du i øjeblikket er indstillet til at arbejde på kommando eller dens stenografi-alias, db :

db
test

Du vil muligvis opdage, at du i øjeblikket bruger en database, der ikke var angivet af show dbs kommando. Dette skyldes, at i MongoDB, indtil du skriver det første dokument til databasen, oprettes databasen faktisk ikke. Så i eksemplet ovenfor er skallen forberedt til at fungere på en test databasen, men da den ikke eksisterer endnu, vil den ikke blive returneret af show dbs kommando.

For at skifte til en anden database kan du bruge use kommando:

use admin
switched to db admin

For at få nogle grundlæggende oplysninger om din nuværende database, kan du bruge db.stats() metode:

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}

Outputtet viser information om antallet af samlinger i databasen, lagerstatistikker, indeksoplysninger og mere.



Sådan opretter du databaser

MongoDB har ikke en eksplicit kommando til at oprette en ny database. I stedet skal du som tidligere nævnt i stedet indikere til MongoDB, at du vil skrive nye dokumenter til en ny database. Når disse dokumenter er oprettet, vil de implicit oprette databasen.

For at forberede MongoDB til at skrive til en ny database, udsted use kommando for at skifte til en ikke-eksisterende database.

Her vil vi opsætte MongoDB til at oprette en ny database kaldet playground :

use playground
switched to db playground

Hvis du tjekker din nuværende database, vil den bekræfte, at playground databasen er i øjeblikket målet for databaserelaterede kommandoer:

db
playground

Men som nævnt før, da vi endnu ikke har oprettet nogen dokumenter, er selve databasen ikke oprettet endnu:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

For faktisk at oprette den nye database, skal vi først oprette noget.



Sådan får du vist samlingerne i en database

I MongoDB, samlinger er strukturer, der bruges til at gruppere dokumenter ved hjælp af det kategoriseringssystem, du ønsker at implementere. De bor inde i databaser og gemmer dokumenter.

Du kan se de tilgængelige samlinger i den database, du bruger i øjeblikket, ved at bruge show collections metode.

Her skifter vi til admin database, der har nogle samlinger tilgængelige for at demonstrere:

use adminshow collections
system.rolessystem.userssystem.version

Alternativt kan du hente de samme samlingsnavne i et array ved hjælp af db.getCollectionNames() metode:

db.getCollectionNames()
[ "system.roles", "system.users", "system.version" ]

For at vise yderligere oplysninger om samlingerne i den aktuelle database skal du bruge db.getCollectionInfos() metode:

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_"                }        }]

Du kan også valgfrit sende et dokument til kommandoen for at filtrere resultaterne. For eksempel, hvis du kun er interesseret i at se oplysningerne om system.version samling, kan du skrive:

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_"                }        }]

For at kontrollere, hvor mange dokumenter en samling indeholder, skal du bruge db.<collection>.count() metode. For eksempel kontrollerer følgende kommando, hvor mange dokumenter der er i system.users samling:

db.system.users.count()
2

For at se grundlæggende statistik om samlingerne i den aktuelle database skal du bruge db.printCollectionStats() metode:

db.printCollectionStats()

Kommandoen kan udsende mere information, end du nemt kan forbruge, men den indeholder, men er nyttig i nogle scenarier, hvor du skal tage et dybt kig på en samlings egenskaber.



Sådan opretter du samlinger

For at oprette en ny samling er der to muligheder:Du kan oprette samlinger enten implicit eller eksplicit.

Som med databaser kan MongoDB automatisk oprette samlinger, første gang et dokument skrives til dem. Denne metode fortæller MongoDB at oprette en ny samling ved at indsætte et dokument i en samling, der ikke eksisterer endnu.

For eksempel kan vi skifte tilbage til playground database, som vi var interesseret i tidligere. Når vi er i det navneområde, kan vi indsætte et nyt dokument i en samling ved at kalde insert.() kommando på det navn, vi gerne vil bruge til den nye samling. Her kan vi oprette et dokument om et dias i en ny samling kaldet equipment :

use playgrounddb.equipment.insert({name: "slide"})
switched to db playgroundWriteResult({ "nInserted" : 1 })

Outputtet indikerer, at ét dokument blev skrevet. Ovenstående kommando udførte tre separate handlinger. Først oprettede MongoDB playground database, som vi havde refereret til i vores use kommando. Det skabte også equipment samling i databasen, da vi kalder insert() kommando på det pågældende samlingsnavn. Til sidst opretter den det faktiske dokument i equipment samling ved hjælp af det input, vi gav til insert() kommando.

Du kan kontrollere, at alle disse handlinger er blevet udført med følgende kommandoer:

show dbsshow collectionsdb.equipment.count()db.equipment.find()

Outputtet skal vise, at playground databasen er nu blandt de listede databaser, at equipment samling er angivet, at der er ét dokument i equipment samling, og at dokumentet er {name: "slide"} dokument, vi indsatte i kommandoen.

Den anden mulighed at bruge til at oprette samlinger er eksplicit at bruge db.createCollection() metode. Dette giver dig mulighed for at oprette samlinger uden at tilføje nogen dokumenter til dem.

For eksempel kan du oprette en ny samling på playground database kaldet maintenance.requests ved at skrive:

db.createCollection("maintenance.requests")
{ "ok" : 1 }

Vi kan bekræfte, at den nye samling dukker op, når vi forespørger efter den, men at den ikke har nogen dokumenter:

show collectionsdb.maintenance.requests.count()
equipmentmaintenance.requests0

db.createCollection() metoden er primært nyttig, fordi den giver dig mulighed for at angive forskellige muligheder ved oprettelsen. For eksempel vil vi måske oprette en afgrænset samling , som er en samling, der opretholder en øvre grænse for dens tildelte størrelse, den gemmer ved at slette dets ældste dokument, når det er fuldt.

For at oprette en begrænset samling kaldet notifications der højst kan lagre 10240 bytes information, kan du ringe til:

db.createCollection(    "notifications",    {        capped: true,        size: 10240    })
{ "ok" : 1}

Dette vil oprette en begrænset notification samling, som vi kan bekræfte ved at skrive:

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_"                }        }]


Sådan sletter du samlinger

For at slette en samling kan du bruge drop() metode på selve samlingen.

For eksempel for at droppe de begrænsede notifications samling, vi har oprettet, kan du skrive:

db.notifications.drop()
true

Du kan bekræfte, at handlingen lykkedes ved at angive samlingerne i den aktuelle database igen:

show collections
equipmentmaintenance.requests


Sådan sletter du databaser

For at slette en hel database skal du kalde db.dropDatabase() kommando. Dette vil slette den aktuelle database, så sørg for at du er på den rigtige database, før du udfører:

use playgrounddb.dropDatabase()
switched to db playground{ "dropped" : "playground", "ok" : 1 }

Hvis du tjekker listen over tilgængelige databaser, playground vises ikke længere:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Da vi ikke har skiftet til en ny database endnu, er MongoDB stadig sat op til at skabe en playground database, hvis vi vælger at tilføje en ny samling eller dokument. Du kan bekræfte dette med db kommando:

db
playground


Konklusion

Oprettelse og styring af databaser og samlinger er en vigtig færdighed, når du bruger MongoDB. Disse grundlæggende organisatoriske værktøjer giver dig mulighed for at gruppere relaterede dokumenter, forespørge undergrupper af oplysninger og opsætte autorisationspolitikker for forskellige typer data. At blive fortrolig med, hvordan du effektivt administrerer disse strukturer, vil give dig mulighed for at administrere dine data mere effektivt med færre overraskelser.




  1. Hvordan implementerer man en node.js med redis på kubernetes?

  2. MongoDb - Skift type fra Int til Double

  3. Redis::CommandError:ERR Klient sendte AUTH, men der er ikke angivet en adgangskode

  4. Spring Data Redis:Redis Pipeline returnerer altid null