title: $lookup to return unmatched items from other collection
body: <p>I always thought that <code>preserveNullAndEmptyArrays</code> would allow a <code>$lookup</code> on a record that does not exist and still return the main result. </p>
  
  <p>Unfortunately in this case I only get data from AAA - I would like data from both AAA and BBB. </p>
  
  <p><strong>property table</strong></p>
  
  <pre><code>{
      _id: "AAA",
      name: "Property AAA"
  },
  {
      _id: "BBB",
      name: "Property BBB"
  }
  </code></pre>
  
  <p><strong>hotdeal table</strong></p>
  
  <pre><code>{
      _id: "001",
      property: "AAA",
      active: true,
      text: "very good deal"
  }
  </code></pre>
  
  <p><strong>Aggregate</strong></p>
  
  <pre><code>db.property.aggregate([
  { $match: {} },
  {
      $lookup: {
          from: "hotdeal",
          localField: "_id",
          foreignField: "property",
          as: "hotdeals"
      }
  },
  { 
      $unwind: { 
          path: "$hotdeals", preserveNullAndEmptyArrays: true
      }
  }, 
  {                                                   
      $match: {                                       
          "hotdeals.active": true
      }
  },
  {
      $project: {
          _id : 0,
          name : 1,
          "text" : "$hotdeals.text"
      }
  }
  ])
  </code></pre>