sql >> Databáze >  >> NoSQL >> MongoDB

Co je operátor $unwind v MongoDB?

Za prvé, vítejte v MongoDB!

Je třeba si pamatovat, že MongoDB využívá k ukládání dat přístup „NoSQL“, takže myšlenky na výběry, spojení atd. z vaší mysli vyhyďte. Způsob, jakým ukládá vaše data, je ve formě dokumentů a kolekcí, což umožňuje dynamický způsob přidávání a získávání dat z vašich úložišť.

Jak již bylo řečeno, abyste pochopili koncept za parametrem $unwind, musíte nejprve pochopit, co říká případ použití, který se pokoušíte citovat. Vzorový dokument z mongodb.org je následující:

{
 title : "this is my title" ,
 author : "bob" ,
 posted : new Date () ,
 pageViews : 5 ,
 tags : [ "fun" , "good" , "fun" ] ,
 comments : [
             { author :"joe" , text : "this is cool" } ,
             { author :"sam" , text : "this is bad" }
 ],
 other : { foo : 5 }
}

Všimněte si, že tagy jsou ve skutečnosti pole 3 položek, v tomto případě „zábava“, „dobré“ a „zábavné“.

$unwind vám umožní odloupnout dokument pro každý prvek a vrátí výsledný dokument. Abychom o tom uvažovali v klasickém přístupu, bylo by ekvivalentem „pro každou položku v poli tagů vraťte dokument pouze s ta položka".

Výsledek spuštění následujícího:

db.article.aggregate(
    { $project : {
        author : 1 ,
        title : 1 ,
        tags : 1
    }},
    { $unwind : "$tags" }
);

vrátí následující dokumenty:

{
     "result" : [
             {
                     "_id" : ObjectId("4e6e4ef557b77501a49233f6"),
                     "title" : "this is my title",
                     "author" : "bob",
                     "tags" : "fun"
             },
             {
                     "_id" : ObjectId("4e6e4ef557b77501a49233f6"),
                     "title" : "this is my title",
                     "author" : "bob",
                     "tags" : "good"
             },
             {
                     "_id" : ObjectId("4e6e4ef557b77501a49233f6"),
                     "title" : "this is my title",
                     "author" : "bob",
                     "tags" : "fun"
             }
     ],
     "OK" : 1
}

Všimněte si, že jediná věc, která se mění v poli výsledků, je to, co se vrací v hodnotě tagů. Pokud potřebujete další informace o tom, jak to funguje, vložil jsem sem odkaz. Doufejme, že to pomůže, a hodně štěstí s vaším vpádem do jednoho z nejlepších systémů NoSQL, se kterými jsem se zatím setkal.



  1. ABC NestJS:Průvodce pro začátečníky s MongoDB (Mongoose).

  2. Dynamická kolekce Mongodb $lookup

  3. Přístup k proměnné v rámci vlákna rails

  4. Cesta zápisu Apache HBase