Jak začít s MongoDB do 10 minut
Navindu Jayatilake
MongoDB je bohatý dokument orientované NoSQL databáze.
Pokud jste úplným začátečníkem NoSQL, doporučuji vám, abyste se rychle podívali na můj článek NoSQL publikovaný dříve.
Dnes jsem se chtěl podělit o některé základní věci o příkazech MongoDB, jako je dotazování, filtrování dat, mazání, aktualizace atd.
dobře, dost řečí, pojďme do práce!
konfigurace ?
Chcete-li pracovat s MongoDB, musíte nejprve nainstalovat MongoDB do počítače. Chcete-li to provést, navštivte oficiální Centrum stahování a stáhněte si verzi pro konkrétní operační systém. Tady, použil jsem Windows.
po stažení nastavení komunitního serveru MongoDB projdete instalačním procesem „next after next“. Po dokončení přejděte na jednotku C, ve které jste nainstalovali MongoDB. Přejděte do program files a vyberte adresář MongoDB.
C: -> Program Files -> MongoDB -> Server -> 4.0(version) -> bin
v adresáři bin najdete zajímavý pár spustitelných souborů.
- mongod
- mongo
promluvme si o těchto dvou souborech.
mongod je zkratka pro „Mongo Daemon“. mongod je proces na pozadí používaný MongoDB. Hlavním účelem mongod je spravovat všechny úkoly serveru MongoDB. Například přijímání požadavků, reakce na klienta a správa paměti.
mongo je shell příkazového řádku, který může komunikovat s klientem(například správci systému a vývojáři).
nyní se podívejme, jak můžeme tento server zprovoznit. Chcete-li to provést v systému Windows, musíte nejprve vytvořit několik adresářů na jednotce C. Otevřete příkazový řádek uvnitř disku C a proveďte následující kroky:
C:\> mkdir data/dbC:\> cd dataC:\> mkdir db
cílem těchto adresářů je MongoDB vyžaduje složku pro ukládání všech údajů. Výchozí cesta k adresáři dat MongoDB je /data/db
na jednotce. Proto je nutné, abychom tyto adresáře poskytovali.
Pokud spustíte Server MongoDB bez těchto adresářů, pravděpodobně se zobrazí následující chyba:
Po vytvoření těch dvou souborů, přes hlavu zase do bin složky, které máte ve svém mongodb adresář a otevřít si shell uvnitř. Spusťte následující příkaz:
mongod
Voilà! Nyní je náš MongoDB server v provozu! ?
abychom mohli pracovat s tímto serverem, potřebujeme prostředníka. Otevřete tedy další okno příkazu uvnitř složky bind a spusťte následující příkaz:
mongo
po spuštění tohoto příkazu přejděte do shellu, který jsme spustili příkaz mongod (což je náš server). Na konci se zobrazí zpráva „Připojení přijato“. To znamená, že naše instalace a konfigurace jsou úspěšné!
Stačí jednoduše spustit v shellu mongo:
db
Nastavení Proměnné Prostředí
Chcete-li ušetřit čas, můžete nastavit proměnné prostředí. V systému Windows se to provádí podle níže uvedených nabídek:
Advanced System Settings -> Environment Variables -> Path(Under System Variables) -> Edit
jednoduše zkopírujte cestu naší složky bin a stiskněte OK! V mém případě je to C:\Program Files\MongoDB\Server\4.0\bin
Nyní máte vše nastaveno!
práce s MongoDB
existuje spousta GUI (Graphical User Interface) pro práci s MongoDB serverem, jako je MongoDB Compass, Studio 3T a tak dále.
poskytují grafické rozhraní, takže můžete snadno pracovat s databází a provádět dotazy namísto použití shellu a psaní dotazů ručně.
ale v tomto článku budeme používat příkazový řádek k naší práci.
nyní je čas, abychom se ponořili do příkazů MongoDB, které vám pomohou používat s vašimi budoucími projekty.
- otevřete příkazový řádek a zadejte
mongod
pro spuštění serveru MongoDB.
2. Otevřete další shell a zadejte mongo
pro připojení k databázovému serveru MongoDB.
1. Zjištění aktuální databázi jste v
db
Tento příkaz zobrazí aktuální databáze. test
je výchozí databáze, která je ve výchozím nastavení.
2. Výpis databází
show databases
v současné době mám čtyři databází. Jsou to: CrudDB
admin
config
local
.
3. Jít do konkrétní databáze
use <your_db_name>
Tady jsem se přestěhoval do local
databáze. Můžete to zkontrolovat, pokud zkusíte příkaz db
vytisknout aktuální název databáze.
4. Vytvoření databáze
pomocí RDBMS (relační databázové systémy) máme Databáze, Tabulky, řádky a sloupce.
ale v databázích NoSQL, jako je MongoDB, jsou data uložena ve formátu BSON (binární verze JSON). Jsou uloženy ve strukturách nazývaných „sbírky“.
v databázích SQL jsou podobné tabulkám.
v Pořádku, pojďme se bavit o tom, jak jsme se vytvořit databázi v mongo shellu.
use <your_db_name>
počkejte, tento příkaz jsme měli dříve! Proč to znovu používám?!
v MongoDB serveru, pokud je vaše databáze již přítomna, pomocí tohoto příkazu přejdete do vaší databáze.
ale v případě, že databáze již není k dispozici, pak MongoDB server se chystá vytvořit databázi pro vás. Poté se do něj dostane.
po vytvoření nové databáze se příkazem show database
nezobrazí nově vytvořená databáze. Je to proto, že dokud nemá v sobě žádná data (dokumenty), nebude se zobrazovat ve vašem seznamu db.
5. Vytvoření kolekce
přejděte do nově vytvořené databáze pomocí příkazu use
.
ve skutečnosti existují dva způsoby, jak vytvořit kolekci. Podívejme se na obojí.
jedním ze způsobů je vložení dat do kolekce:
db.myCollection.insert({"name": "john", "age" : 22, "location": "colombo"})
tím se vytvoří vaše kolekce myCollection
i když kolekce neexistuje. Poté vloží dokument s name
a age
. Jedná se o neomezené sbírky.
druhý způsob je uveden níže:
2.1 Vytvoření Non-Limitované Kolekce
db.createCollection("myCollection")
2.2 Vytvoření Limitované Kolekce
db.createCollection("mySecondCollection", {capped : true, size : 2, max : 2})
tímto způsobem, budete vytvořit kolekci bez vložené údaje.
„limitovaná kolekce“ má maximální počet dokumentů, který zabraňuje přetečení dokumentů.
v tomto příkladu jsem povolil omezení nastavením jeho hodnoty na true
.
size : 2
znamená limit dvou megabajtů, a max: 2
nastaví maximální počet dokumentů pro dva.
Nyní, pokud se pokusíte vložit více než dva dokumenty, aby mySecondCollection
find
příkaz (který budeme mluvit o tom brzy), budete vidět pouze poslední vložené dokumenty. Mějte na paměti, že to neznamená, že první dokument byl odstraněn-prostě se nezobrazuje.
6. Vložení dat
můžeme vložit data do nové kolekce nebo do kolekce, která byla vytvořena dříve.
k Dispozici jsou tři způsoby vkládání údajů.
-
insertOne()
se používá k vložení jediného dokumentu. -
insertMany()
se používá k vložení více než jednoho dokumentu. -
insert()
se používá k vkládání dokumentů tolik, kolik chcete.
níže uvádíme několik příkladů:
- insertOne()
db.myCollection.insertOne( { "name": "navindu", "age": 22 })
- insertMany()
db.myCollection.insertMany()
insert()
metoda je podobná insertMany()
metoda.
všimněte si také, že jsme vložili novou vlastnost nazvanou location
do dokumentu pro John Doe
. Pokud tedy použijete find
, uvidíte pouze projohn doe
vlastnostlocation
je připojena.
to může být výhoda, pokud jde o databáze NoSQL, jako je MongoDB. Umožňuje škálovatelnost.
7. Dotazování Dat
Zde je, jak můžete získat všechny údaje z kolekce:
db.myCollection.find()
Pokud chcete vidět tato data v čistší, způsob stačí přidat .pretty()
do konce. Zobrazí se dokument v pěkně vytištěném formátu JSON.
db.myCollection.find().pretty()
Počkejte…V těchto příkladů jste jen si něco jako _id
? Jak se to tam dostalo?
No, když vložíte dokument, MongoDB automaticky přidá _id
pole, které jednoznačně identifikuje každý dokument. Pokud nechcete, aby se zobrazí, jednoduše spusťte následující příkaz,
db.myCollection.find({}, _id: 0).pretty()
Dále se podíváme na filtrování údajů.
Chcete-li zobrazit nějaký konkrétní dokument, můžete zadat jeden detail dokumentu, který chcete zobrazit.
db.myCollection.find( { name: "john" })
řekněme, že chcete jen k zobrazení lidí, jejichž věk je menší než 25. Pro filtrování můžete použít $lt
.
db.myCollection.find( { age : {$lt : 25} })
Podobně $gt
znamená větší než, $lte
je „menší než nebo rovno“, $gte
je „větší než nebo rovno“ $ne
„není rovno“.
8. Aktualizace dokumentů
řekněme, že chcete aktualizovat něčí adresu nebo věk, jak byste to mohli udělat? Podívejte se na další příklad:
db.myCollection.update({age : 20}, {$set: {age: 23}})
prvním argumentem je pole, který dokument chcete aktualizovat. Zde specifikuji age
pro jednoduchost. V produkčním prostředí můžete použít něco jako pole _id
.
pro aktualizaci jedinečného řádku je vždy lepší použít něco jako _id
. Je to proto, že více polí může mít stejné age
a name
. Pokud tedy aktualizujete jeden řádek, ovlivní to všechny řádky, které mají stejný název a věk.
Pokud se vám aktualizace dokumentu tímto způsobem se nový majetek, řekněme location
například, dokument bude aktualizován s novým atributem. A pokud uděláte find
, výsledek bude:
Pokud potřebujete odstranit vlastnost z jednoho dokumentu, jsi to mohl udělat něco takového (řekněme, že chcete age
být pryč):
db.myCollection.update({name: "navindu"}, {$unset: age});
9. Odstranění dokumentu
Jak jsem již zmínil dříve, když jste aktualizaci nebo odstranit dokument, stačí zadat _id
name
age
location
.
db.myCollection.remove({name: "navindu"});
10. Odstranění kolekce
db.myCollection.remove({});
Poznámka: Toto se nerovná metodě drop()
. Rozdíl je v drop()
se používá k odstranění všechny dokumenty do sbírky, ale na remove()
metoda se používá k odstranění všech dokumentů, spolu s kolekci sám.
logické operátory
MongoDB poskytuje logické operátory. Níže uvedený obrázek shrnuje různé typy logických operátorů.
řekněme, že chcete, aby zobrazení lidí, jejichž věk je menší než 25, a také jejíž umístění je Colombo. Co bychom mohli dělat?
můžeme použít$and
operátor!
db.myCollection.find({$and:});
V neposlední řadě hovoříme o agregaci.
agregace
rychlá připomínka toho, co jsme se dozvěděli o agregačních funkcích v databázích SQL:
Jednoduše řečeno, agregace skupin hodnot z více dokumentů a shrnuje je v nějakým způsobem.
Představte si, že bychom měli mužské a ženské studenty ve sbírce recordBook
a chceme celkový počet na každém z nich. Abychom získali součet samců a samic, mohli bychom použít $group
agregátní funkci.
db.recordBook.aggregate();
Balení
Takže, jsme se zabývali základy MongoDB, které byste mohli potřebovat v budoucnu k sestavení aplikace. Doufám, že se vám tento článek líbil-díky za přečtení!