MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да управлявате бази данни и колекции в MongoDB


Въведение

MongoDB използва документно-ориентирани структури за съхранение, управление и обработка на данни. Отделните документи са организирани в колекции, които от своя страна се съхраняват в бази данни. Тъй като схемата на всеки документ не е дефинирана от статична схема, системите, базирани на документи, предлагат по-голяма гъвкавост от релационните системи, които са съставени от таблици и записи.

В това ръководство ще говорим за това как да създаваме и управляваме структурите, които MongoDB използва за организиране на данни. Ще разгледаме как да създаваме и управляваме бази данни и след това как да създаваме колекции, които да съхраняват подобни или свързани документи.



Как да преглеждате съществуващи бази данни

Преди да започнем да създаваме нови бази данни, е полезно да се запознаете с някои от методите, които MongoDB предоставя за намиране на информация за съществуващи бази данни. Това може да ви помогне да разберете текущото състояние на системата, преди да започнете да правите промени.

За да покажете всички бази данни в системата, до които имате достъп, използвайте show dbs метод:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

MongoDB ще отговори с имената на всички достъпни бази данни в системата, както и с обобщение на текущото им пространство за съхранение.

За да видите с коя база данни сте настроени да работите в момента, използвайте db.getName() команда или нейния съкратен псевдоним, db :

db
test

Може да откриете, че в момента използвате база данни, която не е посочена от show dbs команда. Това е така, защото в MongoDB, докато не напишете първия документ в базата данни, базата данни всъщност не е създадена. И така, в изходния пример по-горе, обвивката е подготвена да работи на test база данни, но тъй като тя все още не съществува, тя няма да бъде върната от show dbs команда.

За да превключите към друга база данни, можете да използвате use команда:

use admin
switched to db admin

За да получите основна информация за текущата си база данни, можете да използвате db.stats() метод:

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}

Резултатът показва информация за броя на колекциите в базата данни, статистически данни за съхранение, информация за индекси и други.



Как се създават бази данни

MongoDB няма изрична команда за създаване на нова база данни. Вместо това, както споменахме по-рано, трябва да посочите на MongoDB, че искате да пишете нови документи в нова база данни. Когато тези документи бъдат създадени, те имплицитно ще създадат базата данни.

За да подготвите MongoDB да пише в нова база данни, пуснете use команда за превключване към несъществуваща база данни.

Тук ще настроим MongoDB за създаване на нова база данни, наречена playground :

use playground
switched to db playground

Ако проверите текущата си база данни, тя ще потвърди, че playground базата данни в момента е целта на свързаните с базата данни команди:

db
playground

Въпреки това, както споменахме по-горе, тъй като все още не сме създали никакви документи, самата база данни все още не е създадена:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

За да създадем действително новата база данни, ще трябва първо да създадем нещо.



Как да преглеждате колекциите в база данни

В MongoDB, колекции са структури, използвани за групиране на документи заедно, използвайки каквато и да е система за категоризация, която искате да приложите. Те живеят в бази данни и съхраняват документи.

Можете да видите наличните колекции в базата данни, която използвате в момента, като използвате show collections метод.

Тук ще преминем към admin база данни, която има налични колекции за демонстрация:

use adminshow collections
system.rolessystem.userssystem.version

Като алтернатива можете да извлечете същите имена на колекции в масив с помощта на db.getCollectionNames() метод:

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

За да покажете допълнителна информация за колекциите в текущата база данни, използвайте db.getCollectionInfos() метод:

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

Можете също така по избор да предадете документ на командата, за да филтрирате резултатите. Например, ако се интересувате само да видите информацията за system.version колекция, можете да въведете:

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

За да проверите колко документи съдържа една колекция, използвайте db.<collection>.count() метод. Например, следната команда проверява колко документа има в system.users колекция:

db.system.users.count()
2

За да видите основни статистически данни за колекциите в текущата база данни, използвайте db.printCollectionStats() метод:

db.printCollectionStats()

Командата може да изведе повече информация, отколкото можете лесно да консумирате, но съдържа, но е полезна в някои сценарии, при които трябва да разгледате задълбочено характеристиките на колекция.



Как се създават колекции

За да създадете нова колекция, има две опции:можете да създавате колекции или имплицитно, или изрично.

Както при базите данни, MongoDB може автоматично да създава колекции при първото написване на документ в тях. Този метод казва на MongoDB да създаде нова колекция, като вмъкне документ в колекция, която все още не съществува.

Например, можем да се върнем обратно към playground база данни, която ни интересуваше по-рано. След като сме в това пространство от имена, можем да вмъкнем нов документ в колекция, като извикаме insert.() команда за името, което бихме искали да използваме за новата колекция. Тук можем да създадем документ за слайд в нова колекция, наречена equipment :

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

Резултатът показва, че е написан един документ. Горната команда изпълни три отделни действия. Първо, MongoDB създаде playground база данни, която сме посочили в нашата use команда. Той също така създаде equipment колекция в базата данни, тъй като ние извикваме insert() команда за името на колекцията. И накрая, той създава действителния документ в equipment колекция с помощта на входа, който предоставихме на insert() команда.

Можете да проверите дали всички тези действия са извършени със следните команди:

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

Резултатът трябва да покаже, че playground база данни вече е сред изброените бази данни, че equipment колекция е посочена, че има един документ в рамките на equipment колекция и че документът е {name: "slide"} документ, който вмъкнахме в командата.

Другата опция, която да използвате за създаване на колекции, е изрично да използвате db.createCollection() метод. Това ви позволява да създавате колекции, без да добавяте документи към тях.

Например, можете да създадете нова колекция в playground база данни, наречена maintenance.requests като напишете:

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

Можем да проверим дали новата колекция се показва, когато я потърсим, но че няма документи:

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

db.createCollection() методът е полезен преди всичко, защото ви позволява да зададете различни опции при създаването. Например, може да искаме да създадем ограничена колекция , която е колекция, която поддържа горна граница на разпределения си размер, който съхранява, като изтрива най-стария си документ, когато е пълен.

За да създадете ограничена колекция, наречена notifications който може да съхранява най-много 10240 байта информация, можете да извикате:

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

Това ще създаде ограничено notification колекция, която можем да проверим, като напишем:

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


Как да изтриете колекции

За да изтриете колекция, можете да използвате drop() метод върху самата колекция.

Например, за да премахнете ограничените notifications колекция, която създадохме, можете да въведете:

db.notifications.drop()
true

Можете да проверите дали операцията е била успешна, като изброите отново колекциите в текущата база данни:

show collections
equipmentmaintenance.requests


Как да изтриете бази данни

За да изтриете цяла база данни, извикайте db.dropDatabase() команда. Това ще изтрие текущата база данни, така че се уверете, че сте в правилната база данни, преди да изпълните:

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

Ако проверите списъка с налични бази данни, playground вече не се показва:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Тъй като все още не сме преминали към нова база данни, MongoDB все още е настроен да създаде playground база данни, ако изберем да добавим нова колекция или документ. Можете да проверите това с db команда:

db
playground


Заключение

Създаването и управлението на бази данни и колекции е важно умение при използване на MongoDB. Тези основни организационни инструменти ви позволяват да групирате свързани документи заедно, да правите заявки за подмножества от информация и да настроите политики за оторизация за различни типове данни. Запознаването с това как да управлявате ефективно тези структури ще ви позволи да управлявате данните си по-ефективно с по-малко изненади.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Актуализиране на вложени обекти на масиви въз основа на свойство в MongoDB

  2. $първо в mongodb

  3. Препращане към други документи по String, а не по ObjectId

  4. mongodb текстово търсене с множество полета

  5. Определяне на най-добрата архитектура за внедряване на клъстер MongoDB