En primer lugar, ¡bienvenido a MongoDB!
Lo que hay que recordar es que MongoDB emplea un enfoque "NoSQL" para el almacenamiento de datos, así que olvídese de los pensamientos de selecciones, uniones, etc. La forma en que almacena sus datos es en forma de documentos y colecciones, lo que permite un medio dinámico de agregar y obtener los datos de sus ubicaciones de almacenamiento.
Dicho esto, para comprender el concepto detrás del parámetro $ desenrollar, primero debe comprender qué dice el caso de uso que está tratando de citar. El documento de ejemplo de mongodb.org es el siguiente:
{
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 cómo las etiquetas son en realidad una matriz de 3 elementos, en este caso, "divertido", "bueno" y "divertido".
Lo que hace $ desenrollar es permitirle despegar un documento para cada elemento y devolver ese documento resultante. Para pensar en esto en un enfoque clásico, sería el equivalente de "para cada elemento en la matriz de etiquetas, devolver un documento con sólo ese elemento".
Por lo tanto, el resultado de ejecutar lo siguiente:
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
devolvería los siguientes 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
}
Tenga en cuenta que lo único que cambia en la matriz de resultados es lo que se devuelve en el valor de las etiquetas. Si necesita una referencia adicional sobre cómo funciona esto, he incluido un enlace aquí . Espero que esto ayude, y buena suerte con su incursión en uno de los mejores sistemas NoSQL con los que me he encontrado hasta ahora.