sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvad er $unwind-operatøren i MongoDB?

Først og fremmest, velkommen til MongoDB!

Det du skal huske er, at MongoDB anvender en "NoSQL"-tilgang til datalagring, så forsvind tankerne om udvalgte, joinforbindelser osv. fra dit sind. Den måde, den gemmer dine data på, er i form af dokumenter og samlinger, hvilket giver mulighed for en dynamisk måde at tilføje og hente data fra dine lagersteder.

Når det er sagt, for at forstå konceptet bag parameteren $unwind, skal du først forstå, hvad den use case, du forsøger at citere, siger. Eksempeldokumentet fra mongodb.org er som følger:

{
 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 }
}

Læg mærke til, hvordan tags faktisk er en række af 3 elementer, i dette tilfælde "sjovt", "godt" og "sjovt".

Hvad $unwind gør, er at give dig mulighed for at pille et dokument af for hvert element og returnere det resulterende dokument. For at tænke på dette i en klassisk tilgang ville det svare til "for hvert element i tag-arrayet, returnere et dokument med kun den vare".

Resultatet af at køre følgende:

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

ville returnere følgende dokumenter:

{
     "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
}

Bemærk, at det eneste, der ændrer sig i resultatarrayet, er, hvad der returneres i tags-værdien. Hvis du har brug for en yderligere reference til, hvordan dette fungerer, har jeg inkluderet et link her. Forhåbentlig hjælper dette, og held og lykke med dit indtog i et af de bedste NoSQL-systemer, som jeg er stødt på indtil videre.



  1. MongoDB C# Driver 2.0 - Opdater dokument

  2. Almindelige MongoDB-interviewspørgsmål

  3. Sådan returnerer du kun værdien i MongoDB

  4. Voksende betydning af MongoDB inden for datavidenskab