Získejte přehled o dotazech a operacích MongoDB s pomocí tohoto praktického průvodce.
MongoDB je jednou z nejžádanějších a nejobdivovanějších NoSQL databází pro profesionální rozvoj. Jeho flexibilita, škálovatelnost a schopnost zpracovávat velké objemy dat z něj činí nejlepší volbu pro moderní aplikace. Pokud chcete ovládat běžné dotazy a operace MongoDB, jste na správném místě.
Ať už chcete efektivně získávat data a manipulovat s nimi, implementovat robustní datové modely nebo citlivě vytvářet aplikace, získání hlubokého porozumění běžným dotazům a operacím MongoDB nepochybně zlepší vaše dovednosti.
1. Vytvořit nebo přepnout databáze
Vytvoření databáze lokálně prostřednictvím prostředí MongoDB Shell je přímočaré, zvláště pokud jste nastavili vzdálený cluster. Můžete vytvořit novou databázi v MongoDB pomocí použití příkaz:
use db_name
Zatímco výše uvedený příkaz vytváří novou databázi, můžete jej použít k přepnutí na existující databázi, aniž byste museli vytvářet novou od začátku.
2. Drop databáze
Nejprve se pomocí příkazu přepněte do databáze, kterou chcete zrušit použití příkaz jako dříve. Poté zrušte databázi pomocí dropDatabase() příkaz:
use db_name
db.dropDatabase()
3. Vytvořte sbírku
Chcete-li vytvořit kolekci, přepněte do cílové databáze. Použijte createCollection() klíčové slovo pro vytvoření nové kolekce MongoDB:
db.createCollection("collection_name")
Nahradit název_kolekce s vybraným názvem sbírky.
4. Vložit dokument do kolekce
Při odesílání dat do kolekce můžete vložit jeden dokument nebo pole dokumentů.
Chcete-li vložit jeden dokument:
db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})
Výše uvedenou metodu můžete také použít k vložení pole dokumentů s jedním ID:
db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])
Chcete-li vložit mnoho dokumentů najednou, z nichž každý má samostatné ID, použijte vložitMnoho klíčové slovo:
db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])
5. Získejte všechny dokumenty ze sbírky
Můžete se dotazovat na všechny dokumenty z kolekce pomocí nalézt() klíčové slovo:
db.collection_name.find()
Výše uvedené vrátí všechny dokumenty v zadané kolekci:
Vrácená data můžete také omezit na konkrétní počet. Například můžete použít následující příkaz k získání pouze prvních dvou dokumentů:
db.collection_name.find().limit(2)
6. Filtrujte dokumenty ve sbírce
Existuje mnoho způsobů, jak filtrovat dokumenty v MongoDB. Zvažte například následující údaje:
Pokud se dotazujete pouze na určité pole v dokumentu, použijte nalézt metoda:
db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})
Výše uvedené vrátí všechny dokumenty, kde hodnota Líbí se je Wordle. Vypíše pouze názvy a ignoruje ID dokumentu.
Kolekci můžete také filtrovat podle číselného faktoru. Řekněme, že chcete získat jména všech uživatelů starších 21 let, použijte $gt operátor:
db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})
Výstup vypadá takto:
Zkuste vyměnit nalézt s Najdi jednu vidět, co se stane. Existuje však mnoho dalších klíčových slov pro filtrování:
- $lt: Všechny hodnoty menší než zadaná hodnota.
- $gte: Hodnoty stejné nebo větší než zadaná hodnota.
- $lte: Hodnoty, které jsou menší nebo rovné definované hodnotě.
- $ekv: Získá všechny hodnoty rovné zadané hodnotě.
- $ne: Všechny hodnoty se nerovnají zadané hodnotě.
- $in: Toto použijte při dotazování na základě pole. Získá všechny hodnoty odpovídající kterékoli z položek v poli. The $ devět klíčové slovo dělá opak.
7. Řazení dotazů
Řazení pomáhá uspořádat dotaz v určitém pořadí. Můžete řadit sestupně nebo vzestupně. Mějte na paměti, že řazení vyžaduje číselný odkaz.
Chcete-li například seřadit vzestupně:
db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})
Chcete-li seřadit výše uvedený dotaz v sestupném pořadí, nahraďte "1" za "-1."
db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})
8. Aktualizujte dokument
Aktualizace MongoDB vyžadují atomické operátory, aby určili, jak chcete aktualizaci provést. Zde je seznam běžně používaných atomických operátorů, které můžete spárovat s aktualizačním dotazem:
- $set: Přidejte nové pole nebo změňte existující pole.
- $push: Vložení nové položky do pole. Spárujte to s $každý operátor pro vložení mnoha položek najednou.
- $pull: Odebrání položky z pole. Použijte jej s $in odstranit mnoho položek najednou.
- $nenastaveno: Odebrání pole z dokumentu.
Chcete-li aktualizovat dokument a přidat nové pole, například:
db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})
Výše uvedené aktualizuje zadaný dokument, jak je znázorněno:
Odstranění pole e-mailu je jednoduché pomocí $nenastaveno operátor:
db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})
Zvažte následující ukázková data:
Položku můžete vložit do existující položky pole pole pomocí $push operátor:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})
Zde je výstup:
Použijte $každý operátor pro vložení mnoha položek najednou:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})
Zde je výstup:
Jak již bylo zmíněno, $pull operátor odstraní položku z pole:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})
Aktualizovaná data vypadají takto:
Zahrnout $in klíčové slovo pro odstranění mnoha položek v poli najednou:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }})
9. Odstraňte dokument nebo pole
The deleteOne nebo smazatMnoho klíčové slovo odpadne dokument z kolekce. Použití deleteOne pro odstranění dokumentu na základě zadaného pole:
db.collection_name.deleteOne({"Name":"IDNoble"})
Pokud chcete odstranit mnoho dokumentů se společnými klíči, použijte smazatMnoho namísto. Dotaz níže odstraní všechny dokumenty obsahující Šachy jako jejich Líbí se.
db.collection.deleteMany({"Likes":"Chess"})
10. Operace indexování
Indexování zlepšuje výkon dotazů zefektivněním počtu dokumentů, které MongoDB potřebuje ke skenování. Často je nejlepší vytvořit index pro pole, na která se dotazujete častěji.
Indexování MongoDB je podobné jako vy používat indexy k optimalizaci SQL dotazů. Chcete-li například vytvořit vzestupný index na název pole:
db.collection.createIndex({"Name":1})
Chcete-li uvést své indexy:
db.collection.getIndexes()
Výše uvedené je pouze preambule. Existuje několik dalších metod pro vytvoření indexu v MongoDB.
11. Agregace
Agregační kanál, vylepšená verze MapReduce, vám umožňuje spouštět a ukládat složité výpočty zevnitř MongoDB. Na rozdíl od MapReduce, který vyžaduje samostatné psaní mapy a funkce zmenšení Funkce JavaScriptu, agregace je přímočará a používá pouze vestavěné metody MongoDB.
Zvažte například následující údaje o prodeji:
Pomocí agregace MongoDB můžete vypočítat a uložit celkový počet prodaných produktů pro každou kategorii následovně:
db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])
Výše uvedený dotaz vrací následující:
Hlavní dotazy MongoDB
MongoDB nabízí mnoho metod dotazování, včetně funkcí pro zlepšení výkonu dotazů. Bez ohledu na váš programovací jazyk jsou výše uvedené struktury dotazů základní pro interakci s databází MongoDB.
Mohou však existovat určité nesrovnalosti v základní syntaxi. Například zatímco některé programovací jazyky jako Python rozpoznávají případy hadů, jiné, včetně JavaScriptu, používají případ velblouda. Ujistěte se, že prozkoumáte, co funguje pro vámi vybranou technologii.