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

Jak agregować zagnieżdżoną tablicę wyszukiwania w manguście?

  • $lookup z user kolekcja
  • $unwind dekonstruuj id_user tablica
  • $lookup z language odbiór i zwrot w languages pole
  • $map do iteracji wyglądu id_user.language tablica
  • $reduce iterować pętlę languages tablica zwrócona z kolekcji, sprawdź warunek jeśli language_id dopasuj, a następnie zwróć name
db.cvsubmit.aggregate([
  {
    $lookup: {
      from: "user",
      localField: "id_user",
      foreignField: "_id",
      as: "id_user"
    }
  },
  { $unwind: "$id_user" },
  {
    $lookup: {
      from: "language",
      localField: "id_user.language.language_id",
      foreignField: "_id",
      as: "languages"
    }
  },
  {
    $addFields: {
      languages: "$$REMOVE",
      "id_user.language": {
        $map: {
          input: "$id_user.language",
          as: "l",
          in: {
            _id: "$$l._id",
            level: "$$l.level",
            name: {
              $reduce: {
                input: "$languages",
                initialValue: "",
                in: {
                  $cond: [
                    { $eq: ["$$this._id", "$$l.language_id"] },
                    "$$this.name",
                    "$$value"
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
])

Plac zabaw




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wysyłanie zapytań do tablicy wewnątrz dokumentu mangusty

  2. Suma zagregowana MongoDB dla każdego klucza w poddokumencie

  3. Jak zaimplementować oAuth2 wraz z uwierzytelnianiem JWT w spring boot?

  4. 3 sposoby sortowania dokumentów w MongoDB

  5. Tworzenie dynamicznego schematu za pomocą mangusty