sql >> Database >  >> NoSQL >> MongoDB

Wat is de $unwind-operator in MongoDB?

Allereerst welkom bij MongoDB!

Het ding om te onthouden is dat MongoDB een "NoSQL" -benadering van gegevensopslag gebruikt, dus verdrijf de gedachten aan selecties, joins, enz. Uit je hoofd. De manier waarop het uw gegevens opslaat, is in de vorm van documenten en verzamelingen, wat een dynamische manier mogelijk maakt om de gegevens van uw opslaglocaties toe te voegen en te verkrijgen.

Dat gezegd hebbende, om het concept achter de $unwind-parameter te begrijpen, moet u eerst begrijpen wat de use-case die u probeert te citeren, zegt. Het voorbeelddocument van mongodb.org is als volgt:

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

Merk op hoe tags eigenlijk een array van 3 items zijn, in dit geval "leuk", "goed" en "leuk".

Wat $unwind doet, is dat je voor elk element een document kunt verwijderen en dat resulterende document terugstuurt. dat item".

Dus het resultaat van het uitvoeren van het volgende:

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

zou de volgende documenten retourneren:

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

Merk op dat het enige dat in de resultatenarray verandert, is wat wordt geretourneerd in de waarde van de tags. Als je een aanvullende referentie nodig hebt over hoe dit werkt, heb ik hier een link opgenomen. Hopelijk helpt dit, en veel succes met je uitstapje naar een van de beste NoSQL-systemen die ik tot nu toe ben tegengekomen.



  1. mongod --bind_ip met behulp van docker-compose versie 2

  2. Redis uitvoeren op nodejs Docker-afbeelding

  3. omgaan met redis max-geheugensituaties met rails bij gebruik van railcaching

  4. Best practices voor het uitvoeren van MongoDB in een cluster