$project in $lookup mongodb $project in $lookup mongodb mongoose mongoose

$project in $lookup mongodb


You can use $lookup 3.6 syntax to $project the fields inside the $lookup pipeline

User.aggregate([  { "$lookup": {    "from": "schedules",    "let": { "id": "$_id.phone" },    "pipeline": [      { "$match": { "$expr": { "$eq": ["$customer.phone", "$$id"] }}},      { "$project": { "scheduleStart": 1, "scheduleEnd": 1 }}    ],    "as": "user_detail"  }}])


For version of mongo version > 3.6 this query should work for you:

 User.aggregate([{      $match: {        storeKey: req.body.store,            }    },    {      $group: {        _id: {          id: "$_id",          name: "$name",          cpf: "$cpf",                phone: "$phone",          email: "$email",          birthday: "$birthday",          lastName: "$lastname"              },        totalServices: {          $sum: "$services"        },          }    },    {      $lookup: {        from: "schedules",        localField: "_id.phone",        foreignField: "customer.phone",        as: "user_detail"      }      },      {      $project: {        _id: 1,        name: 1,        name: 1,        cpf: 1,              phone: 1,        email: 1,        birthday: 1,        totalServices: 1,        totalValue: { $sum : "$user_detail.value" },        count: {          $sum: 1        },        user_detail: {            scheduleEnd: 1,            scheduleStart: 1,        }      }    },