title: If Mongo $lookup is a left outer join, then how come it excludes non-matching documents?
body: <p>The title says it all. How come if a document does not result in any matching outer document according to its matching field, then how come it's not included in the pipeline's result set?</p>
  
  <p>I'm testing out the new aggregators in Mongo 3.2 and I've gone so far as to perform a nested array lookup by first unwinding, and then grouping the documents back up. All I have left is to have the results include all local documents that didn't meet the <code>$lookup</code> criteria, which is what I thought was the standard definition of "left outer join".</p>
  
  <p>Here's the query:</p>
  
  <pre><code>db.users.aggregate([
      {
          $unwind: "$profile",
          $unwind: "$profile.universities"
      },
      {
          $lookup: {
              from: "universities",
              localField: "profile.universities._id",
              foreignField: "_id",
              as: "profile.universities"
          }
      },
      {
          $group: {
              _id: "$_id",
              universities: {
                  $addToSet: "$profile.universities"
              }
          }
      }
  ]).pretty()
  </code></pre>
  
  <p>So if I have a <code>user</code> that has an empty <code>profile.universities</code> array, then I need it to be included in the result set regardless of the <code>$lookup</code> returning any matches, but it does not. How can I do this, and any reason why Mongo constructed <code>$lookup</code> to operate this way?</p>