title: How to apply condition on $lookup result in mongoDB?
body: <p>With the reference of my previous question, I have a question about $lookup with add some conditions. You may get enough reference about question from below link description.</p>
  
  <blockquote>
    <p>Photo:</p>
  </blockquote>
  
  <pre><code>{_id: 1, photo_name: '1.jpg', photo_description: 'description 1', album_id: 1, flag:1 },
  {_id: 2, photo_name: '2.jpg', photo_description: 'description 2', album_id: 1, flag:1 },
  {_id: 3, photo_name: '3.jpg', photo_description: 'description 3', album_id: 1, flag:1 },
  {_id: 4, photo_name: '4.jpg', photo_description: 'description 4', album_id: 2, flag:0 },
  {_id: 5, photo_name: '5.jpg', photo_description: 'description 5', album_id: 2, flag:0 },
  {_id: 6, photo_name: '6.jpg', photo_description: 'description 6', album_id: 2}
  </code></pre>
  
  <p>Album:</p>
  
  <pre><code>{_id: 1, album_name: "my album 1", album_description: "album description 1", emoji_id: 1},
  {_id: 2, album_name: "my album 2", album_description: "album description 2", emoji_id: 2},
  {_id: 3, album_name: "my album 3", album_description: "album description 3", emoji_id: 3},
  {_id: 4, album_name: "my album 4", album_description: "album description 4", emoji_id: 4},
  {_id: 5, album_name: "my album 5", album_description: "album description 5", emoji_id: 5}
  </code></pre>
  
  <p>Emoji:</p>
  
  <pre><code>{_id: 1, emoji_name: "1.jpg"},  
  {_id: 2, emoji_name: "2.jpg"},  
  {_id: 3, emoji_name: "3.jpg"},  
  {_id: 4, emoji_name: "4.jpg"},  
  {_id: 5, emoji_name: "5.jpg"},  
  {_id: 6, emoji_name: "6.jpg"},  
  {_id: 7, emoji_name: "7.jpg"},  
  {_id: 8, emoji_name: "8.jpg"}   
  </code></pre>
  
  <p>Testing record pagination : </p>
  
  <p><code>2</code></p>
  
  <p>Suppose I add one another field of flag in photo collection and now I want to get count only those photos whose flag is one. </p>
  
  <p>I tried to add $match immediately after $lookup in query, but it fails, It doesn't exclude photos whose flag=0 and also in counter it does not flag condition.</p>
  
  <blockquote>
    <p>Present Output
    There are 3 photos out of 10 photos having set flag 0. And we could not consider those photos whose flag is 0. So expected total is 7 photos but count returns 10 photos though I applied condition of flag in photos.</p>
  </blockquote>
  
  <p>Present Query: </p>
  
  <pre><code> db
  .album
  .aggregate([
    {
       $lookup:{
          from:"photo",
          localField:"_id",
          foreignField:"album_id",
          as:"photo"
       }
    },
    {
       $match:{
          "photo.flag": 1
       }
    },
    {
       $lookup:{
          from:"emoji",
          localField:"album_emoji",
          foreignField:"_id",
          as:"emoji"
       }
    },
    {
       $project:{
          album_name:"$album_name",
          album_description:"$album_description",
          album_emoji:"$emoji.image_name",
          photo:"$photo",
          total_photos: {$size: "$photo"}
       }
    }
  ])
  .toArray();
  </code></pre>
  
  <blockquote>
    <p>Expected output:</p>
  </blockquote>
  
  <pre><code>[
      {
          "_id" : 1,
          "album_name" : "Album 1",
          "album_description" : "Album description 1",
          "album_emoji" : [
              "1.jpg"
          ],
          "total_photos" : 3,
          "photo" : [
              {
                  "_id" : 1,
                  "album_id" : 1,
                  "photo_description" : "description 1",
                  "photo_name" : "1.jpg",             
                  "flag" : 0,
              },
              {
                  "_id" : 2,
                  "album_id" : 1,
                  "photo_description" : "description 2",
                  "photo_name" : "2.jpg",             
                  "flag" : 0,
              },
              {
                  "_id" : 1,
                  "album_id" : 1,
                  "photo_description" : "description 3",
                  "photo_name" : "3.jpg",             
                  "flag" : 0,
              }
          ]
      }
  ]
  </code></pre>
  
  <blockquote>
    <p>Present output:</p>
  </blockquote>
  
  <pre><code>[
      {
          "_id" : 1,
          "album_name" : "Album 1",
          "album_description" : "Album description 1",
          "album_emoji" : [
              "1.jpg"
          ],
          "total_photos" : 5,
          "photo" : [
              {
                  "_id" : 1,
                  "album_id" : 1,
                  "photo_description" : "description 1",
                  "photo_name" : "1.jpg",             
                  "flag" : 1,
              },
              {
                  "_id" : 2,
                  "album_id" : 1,
                  "photo_description" : "description 2",
                  "photo_name" : "2.jpg",             
                  "flag" : 1,
              },
              {
                  "_id" : 3,
                  "album_id" : 1,
                  "photo_description" : "description 3",
                  "photo_name" : "3.jpg",             
                  "flag" : 1,
              },
              {
                  "_id" : 4,
                  "album_id" : 1,
                  "photo_description" : "description 4",
                  "photo_name" : "4.jpg",             
                  "flag" : 0,
              },
              {
                  "_id" : 5,
                  "album_id" : 1,
                  "photo_description" : "description 5",
                  "photo_name" : "5.jpg",             
                  "flag" : 0,
              }
          ]
      }
  ]
  </code></pre>