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

Złożony dokument Mongodb Aggregate z zagnieżdżonymi wyszukiwaniami

Zrobiłeś $unwind dwa razy, więc potrzebujesz dwóch $group .

{
  $group: {
    _id: {
      secId: "$_id",
      fId: "$Sections.id"
    },
    Type: {
      $first: "$Type"
    },
    Name: {
      $first: "$Name"
    },
    Header: {
      $first: "$Sections.Header"
    },
    fieldItems: {
      $push: "$Sections.FieldItems"
    }
  }
},
{
  $group: {
    _id: "$_id.secId",
    Type: {
      $first: "$Type"
    },
    Name: {
      $first: "$Name"
    },
    Sections: {
      $push: {
        id: "$_id.fId",
        Header: "$Header",
        fieldItems: "$fieldItems"
      }
    }
  }
}
  1. Pierwsza grupa — do grupowania obiektów podrzędnych. Ale Typ,Nazwa i Nagłówek muszą być ustawione odpowiednio na tablicę nadrzędną i podrzędną.
  2. Druga grupa — do grupowania obiektów nadrzędnych. Podczas grupowania dziecka otrzymujemy wszystkie samodzielne pola. Tutaj tylko musimy ustawić go w odpowiednich zamówieniach.

Pracujący plac zabaw Mongo

Uwaga :gdy używasz $lookup , dostarczy tablicę. Ale są miejsca, w których po prostu robisz to jako obiekt. Nie wiem, czy łączysz się w relacji jeden-do-jednego, czy nie. Jeśli tak, możesz użyć operatora pozycyjnego w projekcji lub arrayElemAt




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Schemat Mongoose nie został zarejestrowany dla modelu

  2. Czy AWS DocumentDB obsługuje łączenie 3+ kolekcji w jednym zapytaniu?

  3. Każda praca z kluczem Mongodb nie może zawierać . czy $?

  4. Przechowuj wyliczenie MongoDB

  5. Czy przenoszenie dokumentów między kolekcjami to dobry sposób na przedstawienie zmian stanu w MongoDB?