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

Jak wykonać sprzężenia zagnieżdżone (łączenie 3 lub więcej kolekcji) w potoku agregacji MongoDB?

Wykonaj wyszukiwanie zagnieżdżone za pomocą wyszukiwanie za pomocą potoku ,

  • $lookup z orders kolekcja,
    • let , zdefiniuj zmienną customer_id czyli z głównej kolekcji, aby uzyskać dostęp do tej zmiennej referencyjnej wewnątrz potoku za pomocą $$ jak $$customer_id ,
    • pipeline możemy dodać etapy potoku tak samo, jak robimy to w potoku na poziomie głównym
    • $expr ilekroć dopasujemy pola wewnętrzne, wymaga to warunku dopasowania wyrażenia, więc $$customer_id jest nadrzędnym polem kolekcji zadeklarowanym w let i $customer_id jest polem kolekcji podrzędnej/bieżącej
  • $lookup z orders kolekcja
db.customers.aggregate([
  {
    $lookup: {
      from: "orders",
      let: { customer_id: "$customer_id" },
      pipeline: [
        { $match: { $expr: { $eq: ["$$customer_id", "$customer_id"] } } },
        {
          $lookup: {
            from: "orderitems",
            localField: "order_id",
            foreignField: "order_id",
            as: "items"
          }
        }
      ],
      as: "orders"
    }
  }
])

Plac zabaw




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jakiej bazy danych NoSQL użyć w przypadku rzadkich szeregów czasowych, takich jak dane?

  2. Wstaw lub zaktualizuj do Mongo za pomocą mangusty i modyfikuj elementy wewnętrzne podczas aktualizacji

  3. limity liczby zbiorów w bazach danych

  4. MongoDB:nie uwzględnia wielkości liter i akcentu

  5. Błąd:Route.post() wymaga funkcji wywołania zwrotnego, ale otrzymał [object Undefined]