Po pierwsze, witamy w MongoDB!
Należy pamiętać, że MongoDB stosuje podejście „NoSQL” do przechowywania danych, więc zapomnij o myślach o wyborze, złączeniach itp. Sposób, w jaki przechowuje Twoje dane, ma postać dokumentów i zbiorów, co pozwala na dynamiczne dodawanie i pozyskiwanie danych z Twoich lokalizacji przechowywania.
Biorąc to pod uwagę, aby zrozumieć koncepcję parametru $ relax, musisz najpierw zrozumieć, co mówi przypadek użycia, który próbujesz zacytować. Przykładowy dokument z mongodb.org wygląda następująco:
{
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 }
}
Zwróć uwagę, że tagi są w rzeczywistości tablicą trzech elementów, w tym przypadku „zabawnych”, „dobrych” i „zabawnych”.
To, co robi $ relax, to pozwala ci zdjąć dokument dla każdego elementu i zwrócić ten wynikowy dokument. Myślenie o tym w klasycznym podejściu byłoby równoznaczne z wyrażeniem „dla każdego elementu tablicy tagów zwróć dokument zawierający tylko ten element”.
W ten sposób wynik uruchomienia:
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
zwróci następujące dokumenty:
{
"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
}
Zauważ, że jedyną zmianą w tablicy wyników jest to, co jest zwracane w wartości tagów. Jeśli potrzebujesz dodatkowych informacji na temat tego, jak to działa, zamieściłem tutaj link . Mam nadzieję, że to pomoże i powodzenia w wyprawie do jednego z najlepszych systemów NoSQL, z jakimi się do tej pory spotkałem.