Först och främst, välkommen till MongoDB!
Saken att komma ihåg är att MongoDB använder sig av en "NoSQL"-metod för datalagring, så fördärva tankarna på urval, sammanfogningar, etc. från ditt sinne. Det sätt som den lagrar dina data på är i form av dokument och samlingar, vilket möjliggör ett dynamiskt sätt att lägga till och hämta data från dina lagringsplatser.
Med det sagt, för att förstå konceptet bakom parametern $unwind måste du först förstå vad användningsfallet som du försöker citera säger. Exempeldokumentet från mongodb.org är följande:
{
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ägg märke till hur taggar faktiskt är en uppsättning av 3 objekt, i det här fallet "roligt", "bra" och "roligt".
Vad $unwind gör är att låta dig dra av ett dokument för varje element och returnera det resulterande dokumentet. För att tänka på detta i ett klassiskt tillvägagångssätt skulle det vara motsvarigheten till "för varje objekt i taggarrayen, returnera ett dokument med endast den artikeln".
Alltså resultatet av att köra följande:
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
skulle returnera följande dokument:
{
"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
}
Lägg märke till att det enda som ändras i resultatmatrisen är vad som returneras i taggvärdet. Om du behöver en ytterligare referens om hur detta fungerar, har jag inkluderat en länk här. Förhoppningsvis hjälper detta, och lycka till med ditt inhopp i ett av de bästa NoSQL-systemen som jag har stött på hittills.