MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Ако Mongo $lookup е ляво външно присъединяване, тогава как така то изключва несъвпадащи документи?

Това поведение не е свързано с $lookup , това е защото поведението по подразбиране за $unwind е да се пропуснат документи, където референтното поле липсва или е празен масив.

За запазване на размотаните документи дори когато profile.universities е празен масив, можете да зададете неговите preserveNullAndEmptyArrays опция за 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. Заявка за обобщено съвпадение на Mongodb с приоритет при пълно съвпадение

  2. Как да изтрия база данни с Mongoose?

  3. 5 начина да получите минути от среща в MongoDB

  4. Редът на полето в MongoDB и позицията на документа се променят след актуализация

  5. Проблем с Java Spring Mongo Sort Ignore Case