Tout d'abord, bienvenue à MongoDB !
Il ne faut pas oublier que MongoDB utilise une approche "NoSQL" du stockage des données, alors oubliez les sélections, les jointures, etc. MongoDB stocke vos données sous forme de documents et de collections, ce qui permet d'ajouter et d'obtenir les données de vos emplacements de stockage de manière dynamique.
Ceci étant dit, pour comprendre le concept derrière le paramètre $unwind, vous devez d'abord comprendre ce que dit le cas d'utilisation que vous essayez de citer. Le document d'exemple de mongodb.org est le suivant :
{
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 }
}
Remarquez que tags est en fait un tableau de 3 éléments, dans ce cas "fun", "good" et "fun".
Ce que $unwind fait, c'est vous permettre de découper un document pour chaque élément et retourner le document résultant. Dans une approche classique, ce serait l'équivalent de "pour chaque élément du tableau de balises, renvoyer un document contenant uniquement cet élément".
Ainsi, le résultat de l'exécution de ce qui suit :
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
retournerait les documents suivants :
{
"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
}
Remarquez que la seule chose qui change dans le tableau de résultats est ce qui est renvoyé dans la valeur des balises. Si vous avez besoin d'une référence supplémentaire sur la façon dont cela fonctionne, j'ai inclus un lien aquí . J'espère que cela vous aidera, et bonne chance pour votre incursion dans l'un des meilleurs systèmes NoSQL que j'ai rencontrés jusqu'à présent.