Willkommen bei MongoDB!
Die Sache, an die Sie sich erinnern sollten, ist, dass MongoDB einen "NoSQL" -Ansatz für die Datenspeicherung verwendet, sodass Sie die Gedanken an Auswahlen, Verknüpfungen usw. aus Ihrem Kopf verlieren. Die Art und Weise, wie Ihre Daten gespeichert werden, erfolgt in Form von Dokumenten und Sammlungen, die ein dynamisches Mittel zum Hinzufügen und Abrufen der Daten von Ihren Speicherorten ermöglichen.
Um das Konzept hinter dem Parameter $ unwind zu verstehen, müssen Sie zunächst verstehen, was der Anwendungsfall, den Sie zitieren möchten, aussagt. Das Beispieldokument von mongodb.org lautet wie folgt:
{
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 }
}
Beachten Sie, dass Tags tatsächlich ein Array von 3 Elementen sind, in diesem Fall "Spaß", "Gut" und "Spaß".
Mit $ unwind können Sie für jedes Element ein Dokument abziehen und das resultierende Dokument zurückgeben. Um dies in einem klassischen Ansatz zu betrachten, wäre es gleichbedeutend mit "für jedes Element im Tags-Array ein Dokument mit nur diesem Element zurückgeben".
Somit ergibt sich folgendes Ergebnis:
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
würde die folgenden Dokumente zurückgeben:
{
"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
}
Beachten Sie, dass sich im Ergebnisarray nur ändert, was im Tag-Wert zurückgegeben wird. Wenn Sie eine zusätzliche Referenz dazu benötigen, habe ich hier einen Link eingefügt . Hoffentlich hilft das und viel Glück bei Ihrem Streifzug durch eines der besten NoSQL-Systeme, die mir bisher begegnet sind.