Primeiramente, bem-vindo ao MongoDB!
A coisa a lembrar é que o MongoDB emprega uma abordagem "NoSQL" para armazenamento de dados, então pereça os pensamentos de seleções, junções, etc. de sua mente. A maneira como armazena seus dados é na forma de documentos e coleções, o que permite um meio dinâmico de adicionar e obter os dados de seus locais de armazenamento.
Dito isto, para entender o conceito por trás do parâmetro $unwind, primeiro você deve entender o que o caso de uso que você está tentando citar está dizendo. O documento de exemplo do mongodb.org é o seguinte:
{
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 }
}
Observe como as tags são na verdade uma matriz de 3 itens, neste caso sendo "divertido", "bom" e "divertido".
O que $ unwind faz é permitir que você retire um documento para cada elemento e retorne o documento resultante. esse item".
Assim, o resultado da execução do seguinte:
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
devolveria os seguintes documentos:
{
"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
}
Observe que a única coisa que muda no array de resultados é o que está sendo retornado no valor das tags. Se você precisar de uma referência adicional sobre como isso funciona, incluí um link aqui. Espero que isso ajude e boa sorte com sua incursão em um dos melhores sistemas NoSQL que encontrei até agora.