MongoDB je databáze NoSQL. V části NoSQL zastřešujeme všechny ty databáze, které nepoužívají jazyk SQL pro dotazování na data.
Klíčové charakteristiky MongoDB
MongoDB je databáze velmi přátelská k JavaScriptu. Odhaluje JavaScript API, které můžeme použít k vytváření databází a kolekcí objektů (nazývaných dokumenty ).
Je to bez schématu , což znamená, že před uložením dat nemusíte předem definovat strukturu.
V MongoDB můžete uložit jakýkoli objekt, aniž byste se museli starat o konkrétní pole, která tvoří tento objekt, a jak je uložit. Řeknete MongoDB, aby tento objekt uložil.
Data jsou uložena ve formátu podobném JSON, ale vylepšena tak, aby umožňovala ukládání více než jen základních datových typů.
Instalace
Pokračujme a nainstalujme MongoDB. Můžete použít jednoho z mnoha cloudových poskytovatelů, kteří nabízejí přístup k instanci MongoDB, ale kvůli učení si to nainstalujeme sami.
Používám počítač Mac, takže pokyny k instalaci v tomto návodu se týkají tohoto operačního systému.
Otevřete terminál a spusťte:
brew tap mongodb/brew
brew install mongodb-community
To je ono.
Pokyny nebyly příliš dlouhé ani složité, za předpokladu, že víte, jak používat terminál a jak nainstalovat Homebrew.
Instalace nám říká toto:
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
Můžete si vybrat, zda spustíte MongoDB jednou a necháte jej běžet navždy jako službu na pozadí ve vašem počítači (to, co preferuji), nebo jej můžete spustit právě tehdy, když to potřebujete, spuštěním druhého příkazu.
Výchozí konfigurace pro MongoDB je tato:
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
Protokoly jsou uloženy v /usr/local/var/log/mongodb/mongo.log
a databáze je uložena v /usr/local/var/mongodb
.
Ve výchozím nastavení neexistuje žádná kontrola přístupu, kdokoli může číst a zapisovat do databáze.
Skořápka Mongo
Nejlepší způsob, jak experimentovat s MongoDB a začít s ním pracovat, je spustit mongo
program, který spustí shell MongoDB.
Nyní můžete zadat jakýkoli příkaz, kterému Mongo rozumí.
Vytvořte databázi
Když začnete, Mongo vytvoří databázi s názvem test
. Spusťte db
v shellu vám sdělí název aktivní databáze
Pro změnu databáze stačí napsat use newname
a newname
databáze bude okamžitě vytvořena a shell se přepne na její používání.
Použijte show databases
seznam dostupných databází:
Jak vidíte, something
databáze není uvedena jen proto, že v ní ještě není žádná kolekce. Pojďme si jeden vytvořit.
Sbírky
V MongoDB, kolekce je ekvivalent databázové tabulky SQL.
Kolekci v aktuální databázi vytvoříte pomocí db.createCollection()
příkaz. První argument je název databáze a jako druhý parametr můžete předat objekt options.
Jakmile tak učiníte, show databases
zobrazí seznam nové databáze a show collections
zobrazí seznam sbírky.
Můžete také vytvořit novou kolekci tak, že ji použijete jako vlastnost db
objekt a volání insert()
pro přidání objektu do kolekce:
db.dogs.insert({ name: 'Roger' })
Výpis objektů do kolekce
Chcete-li zobrazit objekty přidané do kolekce, použijte find()
metoda:
Jak můžete vidět, existuje další _id
vlastnost pro záznam jsme přidali. To pro nás automaticky generuje MongoDB.
Nyní přidejte další psy:
db.dogs.insert({ name: 'Buck' })
db.dogs.insert({ name: 'Togo' })
db.dogs.insert({ name: 'Balto' })
Volání db.dogs.find()
nám poskytne všechny položky, zatímco můžeme předat parametr pro filtrování a načtení konkrétní položky, například pomocí db.dogs.find({name: 'Roger'})
:
find()
metoda vrací kurzor, na kterém musíte iterovat.
Existuje další metoda, která je užitečná, když víte, že získáte pouze jeden záznam, což je findOne()
a používá se stejným způsobem. Pokud dotazu odpovídá více záznamů, vrátí pouze první.
Aktualizace záznamů
K aktualizaci záznamu můžete použít update()
metoda na kolekci:
Odebírání záznamů
Můžete odstranit záznam, který volá remove()
metoda na kolekci, předávání objektu, který jej pomůže identifikovat:
Chcete-li odstranit všechny položky z kolekce, předejte prázdný objekt:
db.dogs.remove({})