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

Jeśli Mongo $lookup to lewe sprzężenie zewnętrzne, to dlaczego wyklucza niepasujące dokumenty?

To zachowanie nie jest związane z $lookup , dzieje się tak, ponieważ domyślne zachowanie $unwind jest pominięcie dokumentów, w których brakuje pola odniesienia lub pustej tablicy.

Aby zachować rozwinięte dokumenty nawet wtedy, gdy profile.universities jest pustą tablicą, możesz ustawić jej preserveNullAndEmptyArrays opcja true :

db.users.aggregate([
    {
        $unwind: "$profile",
        $unwind: {
            path: "$profile.universities",
            preserveNullAndEmptyArrays: true
        }
    },
    {
        $lookup: {
            from: "universities",
            localField: "profile.universities._id",
            foreignField: "_id",
            as: "profile.universities"
        }
    },
    {
        $group: {
            _id: "$_id",
            universities: {
                $addToSet: "$profile.universities"
            }
        }
    }
]).pretty()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak usunąć kolekcję z bazy danych w MongoDB za pomocą sterownika Mongo DB JAVA?

  2. MongoDB $avg Operator potoku agregacji

  3. MongoDB zapytanie nie uwzględnia wielkości liter w tekście z nawiasem

  4. Mongoose niestandardowe sprawdzanie poprawności hasła

  5. Problem z wydajnością w Spring Data Mongodb