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

Pole obce w $lookup może być polem zagnieżdżonego dokumentu?

$lookup nie ma operatora pozycyjnego, ale możesz użyć niestandardowego pipeline w MongoDB 3.6, aby zdefiniować niestandardowe połączenie warunki :

db.history.aggregate([
    {
        $lookup: {
            from: "childsgroup",
            let: { child_id: "$child_id" },
            pipeline: [
                { $match: { $expr: { $in: [ "$$child_id", "$childs.id" ] } } },
                { $unwind: "$childs" },
                { $match: { $expr: { $eq: [ "$childs.id", "$$child_id" ] } } },
                { $replaceRoot: { newRoot: "$childs" } }
            ],
            as: "childInfo"
        }
    }
])

Pierwszy $match dodano, aby poprawić wydajność:chcemy znaleźć tylko te dokumenty z childsgroup zawierające pasujący child_id a następnie możemy dopasować poddokumenty po $unwind scena.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wskazówki dotyczące zarządzania konfiguracjami baz danych

  2. Jak formatować liczby w SQL

  3. jak rozwiązać ten błąd transakcji w Mlab? [MongoError:Numery transakcji są ... obsługują blokowanie na poziomie dokumentu]

  4. Mongoose usuwanie (wyciąganie) dokumentu w tablicy, nie działa z ObjectID

  5. Znajdź wszystkie dokumenty, które współdzielą max(value) znalezione w kroku zbiorczym