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

Wybierz pasujący element tablicy i zwróć wybrane pola

Jeśli chcesz wybrać tylko niektóre pola tablicy do zwrócenia, mówisz o „przekształceniu” dokumentu. W przypadku wszystkiego, co wykracza poza „podstawowy” wybór pól, oznacza to użycie .aggregate() jako metoda zamiast .find() .

Zatem dwa wymagania to $filter na zawartości tablicy do „dopasowania” i zwrócenia, a także $map rzeczywiste "pola do zwrócenia" z samej tablicy:

User.aggregate([
  { "$match": { "children.name": "def" } },
  { "$project": {
     "name": 1,
     "children": {
       "$map": {
         "input": {
           "$filter": {
             "input": "$children",
             "as": "c",
             "cond": { "$eq": [ "$$c.name", "def" ] } 
           }
         },
         "as": "c",
         "in": {
           "age": "$$c.age",
           "height": "$$c.height"
         }
       }
     }
  }}
])

Tutaj $filter jest używany w celu zmniejszenia zawartości tablicy tylko do tych, które spełniają warunek. Będąc tymi, którzy mają to samo "name" właściwość jako wartość "def" . Jest to następnie przekazywane jako "input" parametr $map .

$map Operator działa tak samo, jak jego odpowiedniki w innych językach, ponieważ "przekształca tablice", aby zwrócić coś zgodnie z tym, co określisz w "in" parametr. Tak więc tutaj w rzeczywistości tylko jawnie nazywamy właściwości i używamy tam przypisań zmiennych dla bieżącego przetwarzanego elementu tablicy, tak aby były one zwracane jako "nowa" zawartość tablicy.

Ogólnym wynikiem jest tablica zawierająca:

  1. Tylko przedmioty spełniające określone warunki.
  2. Tylko pola, które zostały określone do zwrócenia.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Instalowanie MongoDB z Homebrew

  2. Praca ze znakami specjalnymi w kolekcji Mongo

  3. Liczba dokumentów Mongodb

  4. Popraw wstaw DateTime z c# do mongodb

  5. Dynamiczny XML do mongoDB