MongoDB е NoSQL база данни. Под NoSQL чадър поставяме всички онези бази данни, които не използват езика SQL за запитване на данните.
Ключови характеристики на MongoDB
MongoDB е много удобна за JavaScript база данни. Той разкрива JavaScript API, който можем да използваме за създаване на бази данни и колекции от обекти (наречени документи ).
Това е безсхемно , което означава, че не е необходимо да дефинирате предварително структура за данните, преди да ги съхраните.
В MongoDB можете да съхранявате всеки обект, без да се притеснявате за конкретните полета, които съставят този обект и как да ги съхранявате. Вие казвате на MongoDB да съхранява този обект.
Данните се съхраняват във формат, подобен на JSON, но подобрен, за да позволи съхраняването на повече от просто основни типове данни.
Инсталиране
Нека да продължим и да инсталираме MongoDB. Можете да използвате един от многото облачни доставчици, които предлагат достъп до екземпляр на MongoDB, но за да научим, ние ще го инсталираме сами.
Използвам Mac, така че инструкциите за инсталиране в този урок се отнасят за тази операционна система.
Отворете терминала и стартирайте:
brew tap mongodb/brew
brew install mongodb-community
Това е.
Инструкциите не бяха твърде дълги или сложни, ако приемем, че знаете как да използвате терминала и как да инсталирате Homebrew.
Инсталацията ни казва това:
To have launchd start mongodb now and restart at login:
brew services start mongodb-community
Or, if you don't want/need a background service you can just run:
mongod --config /usr/local/etc/mongod.conf
Можете да изберете или да стартирате MongoDB веднъж и той да работи завинаги като фонова услуга на вашия компютър (нещото, което предпочитам), или можете да го стартирате точно когато имате нужда, като изпълните последната команда.
Конфигурацията по подразбиране за MongoDB е следната:
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1
Регистратурите се съхраняват в /usr/local/var/log/mongodb/mongo.log
и базата данни се съхранява в /usr/local/var/mongodb
.
По подразбиране няма контрол на достъпа, всеки може да чете и пише в базата данни.
Обвивката на Mongo
Най-добрият начин да експериментирате с MongoDB и да започнете да взаимодействате с него е като стартирате mongo
програма, която стартира обвивката на MongoDB.
Вече можете да въведете всяка команда, която Mongo разбира.
Създайте база данни
Когато стартирате, Mongo създава база данни, наречена test
. Изпълнете db
в обвивката, за да ви каже името на активната база данни
За да промените базата данни, просто напишете use newname
и newname
база данни ще бъде създадена незабавно и обвивката ще премине към използването й.
Използвайте show databases
за да изброите наличните бази данни:
Както можете да видите, something
базата данни не е в списъка, просто защото в нея все още няма колекция. Нека създадем такъв.
Колекции
В MongoDB, колекция е еквивалент на таблица на SQL база данни.
Създавате колекция в текущата база данни, като използвате db.createCollection()
команда. Първият аргумент е името на базата данни и можете да подадете обект с опции като втори параметър.
След като го направите, show databases
ще изброи новата база данни и show collections
ще изброи колекцията.
Можете също да създадете нова колекция, като я използвате като свойство на db
обект и извикване на insert()
за да добавите обект към колекцията:
db.dogs.insert({ name: 'Roger' })
Изброяване на обекти в колекция
За да покажете добавените към колекция обекти, използвайте find()
метод:
Както можете да видите, има допълнителен _id
свойство за записа, който добавихме. Това се генерира автоматично за нас от MongoDB.
Сега добавете още кучета:
db.dogs.insert({ name: 'Buck' })
db.dogs.insert({ name: 'Togo' })
db.dogs.insert({ name: 'Balto' })
Извикване на db.dogs.find()
ще ни даде всички записи, докато можем да предадем параметър за филтриране и извличане на конкретен запис, например с db.dogs.find({name: 'Roger'})
:
find()
метод връща курсор, който трябва да повторите.
Има друг метод, който е удобен, когато знаете, че ще получите само един запис, който е findOne()
, и се използва по същия начин. Ако няколко записа съвпадат с една заявка, тя просто ще върне първия.
Записите се актуализират
За да актуализирате запис, можете да използвате update()
метод за колекция:
Премахване на записи
Можете да премахнете запис, извиквайки remove()
метод на колекция, подаване на обект, за да помогне за идентифицирането му:
За да премахнете всички записи от колекция, предайте празен обект:
db.dogs.remove({})