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

Изберете Съответстващ елемент на масив и Върнете избраните полета

Ако искате да изберете само определени полета от масив, които да върнете, тогава говорите за „преоформяне“ на документа. За всичко извън „основния“ избор на поле, това означава използване на .aggregate() като метод вместо .find() .

Така че двете изисквания тук са $filter върху съдържанието на масива за „съвпадение“ и връщане, както и $map действителните „полета за връщане“ от самия масив:

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"
         }
       }
     }
  }}
])

Тук $filter се използва, за да се намали съдържанието на масива само до тези, които отговарят на условието. Като тези, които имат едно и също "name" свойството като стойността "def" . След това това се предава като "input" параметър към$map .

$map операторът работи точно като други езикови аналогове, тъй като „преоформя масиви“, за да върне нещо според това, което сте посочили в "in" параметър. Така че тук всъщност само изрично наименуваме свойствата и използваме там присвояване на променливи за текущия елемент на масива, който се обработва, така че те да са това, което се връща като „ново“ съдържание на масива.

Общият резултат е масив, съдържащ:

  1. Само елементите, отговарящи на посочените условия.
  2. Само полетата, които са посочени за връщане.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Вземете стойности като масив от елементи след $lookup

  2. Как да създавате, показвате и пускате колекции в MongoDB

  3. nextjs импортира, но не извиква хвърляния на функция Модулът не е намерен:Грешка:Не може да се разреши „dns“

  4. Закръгляване до 2 знака след десетичната запетая в mongodb

  5. Как да комбинирате не оператори с помощта на конструктора на критерии за пролетни данни