MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Какво представлява операторът $unwind в MongoDB?

Първо, добре дошли в MongoDB!

Нещото, което трябва да запомните е, че MongoDB използва "NoSQL" подход за съхранение на данни, така че изчезнайте мислите за селектиране, присъединяване и т.н. от ума си. Начинът, по който съхранява вашите данни, е под формата на документи и колекции, което позволява динамични средства за добавяне и получаване на данните от местата ви за съхранение.

Като се има предвид това, за да разберете концепцията зад параметъра $unwind, първо трябва да разберете какво казва случаят на употреба, който се опитвате да цитирате. Примерният документ от mongodb.org е както следва:

{
 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 }
}

Забележете как етикетите всъщност са масив от 3 елемента, в този случай са „забавни“, „добри“ и „забавни“.

Това, което прави $unwind, е да ви позволи да отлепите документ за всеки елемент и да връща получения документ. За да мислите за това в класически подход, би било еквивалентно на „за всеки елемент в масива с етикети, върнете документ само с този артикул".

По този начин резултатът от изпълнение на следното:

db.article.aggregate(
    { $project : {
        author : 1 ,
        title : 1 ,
        tags : 1
    }},
    { $unwind : "$tags" }
);

ще върне следните документи:

{
     "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
}

Забележете, че единственото нещо, което се променя в резултатния масив, е това, което се връща в стойността на етикетите. Ако имате нужда от допълнителна справка за това как работи това, включих линк тук. Надяваме се това да ви помогне и успех с набезите ви в една от най-добрите NoSQL системи, които съм срещал досега.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изпълня командата mongodump програмно от node.js?

  2. Завъртане на редове към колони в MongoDB

  3. mongodb:вмъкнете, ако не съществува

  4. Как да настроите _id към db документ в Mongoose?

  5. Как да сортирам масив в запис на колекция в MongoDB?