11 MongoDB dotazy a operace, které musíte znát

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ě.

MUO VIDEO DNE

POKRAČOVÁNÍ V OBSAHU POKRAČUJTE PŘEJÍMÁNÍM

Ať už hledáte efektivní získávání a manipulaci s daty, implementaci robustních datových modelů nebo vytváření citlivých aplikací, získání hlubokého porozumění běžným MongoDB dotazům a operacím nepochybně zlepší vaše dovednosti.

1. Vytvořte nebo přepněte 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. Novou databázi v MongoDB můžete vytvořit pomocí příkazu use:

 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. Vypusťte databázi

Nejprve se přepněte do databáze, kterou chcete zrušit, pomocí příkazu use jako dříve. Poté zrušte databázi pomocí příkazu dropDatabase():

 use db_name
db.dropDatabase()

3. Vytvořte sbírku

Chcete-li vytvořit kolekci, přepněte do cílové databáze. Pomocí klíčového slova createCollection() vytvořte novou kolekci MongoDB:

 db.createCollection("collection_name")

Nahraďte collection_name vámi zvoleným názvem kolekce.

  Jak rozostřit pozadí v zoomu

4. Vložte dokument do sbírky

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 klíčové slovo insertMany:

 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í klíčového slova find():

 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 konkrétní pole v dokumentu, použijte metodu hledání:

 db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})

Výše uvedené vrátí všechny dokumenty, kde hodnota Líbí se mi 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 operátor $gt:

 db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})

Výstup vypadá takto:

Zkuste nahradit find za findOne, abyste viděli, co se stane. Existuje však mnoho dalších klíčových slov pro filtrování:

  • $lt: Všechny hodnoty menší než zadaná.
  • $gte: Hodnoty stejné nebo větší než zadaná hodnota.
  • $lte: Hodnoty, které jsou menší nebo rovné definované hodnotě.
  • $eq: 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. Klíčové slovo $nin dělá opak.
  Jak odstranit kontakt ve WeChat

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řidat nové pole nebo změnit existující pole.
  • $push: Vložení nové položky do pole. Spárujte jej s operátorem $each a vložte mnoho položek najednou.
  • $pull: Odebere položku z pole. Použijte jej s $in k odstranění mnoha položek najednou.
  • $unset: 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é s operátorem $unset:

 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 pole existujícího pole položek pomocí operátoru $push:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})

Zde je výstup:

Pomocí operátoru $each vložíte mnoho položek najednou:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})

Zde je výstup:

  Vložit vlastní počet řádků v aplikaci Excel pomocí tohoto jednoduchého makra

Jak již bylo zmíněno, operátor $pull odstraní položku z pole:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})

Aktualizovaná data vypadají takto:

Zahrnutím klíčového slova $in odstraníte mnoho položek v poli najednou:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }}) 

9. Odstraňte dokument nebo pole

Klíčové slovo deleteOne nebo deleteMany vymaže dokument z kolekce. Použijte deleteOne k 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 místo toho deleteMany. Dotaz níže odstraní všechny dokumenty obsahující šachy jako oblíbené.

 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é tomu, jak používáte indexy k optimalizaci dotazů SQL. Chcete-li například vytvořit vzestupný index v poli Název:

 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 zápis mapy a funkce snížení v samostatných funkcích JavaScriptu, je agregace 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.