MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Co to jest operator $unwind w MongoDB?

Po pierwsze, witamy w MongoDB!

Należy pamiętać, że MongoDB stosuje podejście "NoSQL" do przechowywania danych, więc znikaj z głowy myśli o zaznaczeniach, złączeniach itp. Sposób, w jaki przechowuje dane, ma postać dokumentów i zbiorów, co pozwala na dynamiczne dodawanie i pozyskiwanie danych z lokalizacji przechowywania.

Biorąc to pod uwagę, aby zrozumieć koncepcję stojącą za parametrem $unwind, 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ą 3 elementów, w tym przypadku „zabawnych”, „dobrych” i „zabawnych”.

$unwind pozwala ci oderwać dokument dla każdego elementu i zwrócić ten wynikowy dokument. Aby myśleć o tym w klasycznym podejściu, byłoby to równoważne „dla każdego elementu w tablicy tags, zwróć dokument zawierający tylko ten przedmiot”.

W ten sposób wynik wykonania następujących czynności:

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 link tutaj. Mam nadzieję, że to pomoże i powodzenia w podróży do jednego z najlepszych systemów NoSQL, z jakimi do tej pory się spotkałem.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak ustawić domyślną wartość liczby całkowitej w mongodb?

  2. Współpraca Sparka, Pythona i MongoDB

  3. Wybierz zagnieżdżone pola w mongo db

  4. MongoDB $bsonSize

  5. Jak zwiększyć wydajność operacji aktualizacji w Mongo?