How to match user phone no. inside mongodb aggregate lookup of user_details inside bookings collection

exports.bookingsByStatus = 
     (async (req, res) => {
         const type = req.params.type;

    let page = parseInt(req.query.page) || 1;
    let limit = parseInt(req.query.limit) || 10;
    let skip = parseInt(req.query.skip) || 0;
    let match = {};
    let order = 1;
    let sort = {};
    if (req.query) {
        if (req.query.page) {
            if (req.query.page && req.query.limit) {
                return res.status(500).json({ success: false, msg: "either use page or limit" 
         })
            }
            else if (req.query.page && req.query.skip) {
                return res.status(500).json({ success: false, msg: "either use page or skip"  
       })
            }
        }
        if (req.query.start) {
            skip = parseInt(req.query.start);
        }
        if (req.query.end) {
            const end = parseInt(req.query.end);
            limit = end - skip;
        }
        if (req.query.payment && req.query.payment !== "") {
            match.payment = parseInt(req.query.payment)
        }
        if (req.query.status && req.query.status !== "") {
            match.status = req.query.status
        }
        if (req.query.phone && req.query.phone !== "") {
            match.phone = parseInt(req.query.phone)
        }
        if (req.query.id && req.query.id !== "") {
            match._id = ObjectId(req.query.id)
        }
        if (req.query.sort && req.query.sort !== "") {
            console.log("oorder", req.query.order)
            if (req.query.order && req.query.order !== "") {
                if (req.query.order === "asc") {
                    order = 1;
                }
                else if (req.query.order === "desc") {
                    order = -1;
                }
                else {
                    return res.status(500).json({ success: false, msg: "please use 'asc' or 
                'desc' in order" })
                }
                }
                sort[req.query.sort] = order || 1;
               }
              }


    console.log(req.query);
    if (page < 0 || page === 0) {
        response = { "success": false, "message": "invalid page number, should start with 1" 
    };
        return res.status(500).json(response)
    }
    else {
        if (page >= 2) {
            skip = (page - 1) * limit
        }
    }
    console.log("limit", limit, "skip", skip);


    console.log("match=", match, "sort=", sort, "length", Object.keys(sort).length, 
    "orderby=", order)
    switch (type) {
        case "allBooking":
            try {
                const result = await Booking.aggregate([
                    { $match: match ? match : {} },
                    { $sort: Object.keys(sort).length > 0 ? sort : { _id: 1 } },
                    {
                        $lookup:
                        {
                            from: "users",
                            localField: "user_id",
                            foreignField: "_id",
                            as: "user_details",
                        },
                    },
                    { "$match": { "user_details.phone": { "$eq": match?.phone } } },
                    {
                        $lookup:
                        {
                            from: "employee",
                            localField: "employee_id",
                            foreignField: "_id",
                            as: "employee_details"
                        },
                    },
                    {
                        $lookup:
                        {
                            from: "services",
                            localField: "service_id",
                            foreignField: "_id",
                            as: "service_details"
                        },
                    },

                  //++++++++++++ another way to match user phone no. ++++++++++++++++++
                    // [{
                    //     $lookup: {
                    //         "from": "users",
                    //         "let": { "phone": "$phone" },
                    //         pipeline: [
                    //             {
                    //                 "$match": {
                    //                     "$expr": {
                    //                         "$eq": ["$$phone", match.phone ? match.phone : 
                                                      {}],
                    //                     },
                    //                 },
                    //             },
                    //         ],
                    //         as: "phone"
                    //     }
                    // }],

                    //++++++++++ another way to match user phone no. +++++++++++++++
                     { "$match": { "user_details.phone": match.phone ? match.phone : {} } },
                    {
                        '$facet': {
                            totalCount: [{ $count: "total" }],
                            data: [{ $skip: skip }, { $limit: limit },
                            ],
                        }
                    }
                ])

                const count = result[0].data.length;
                console.log(count);

                return res.status(200).json({ success: true, result, msg: "data found", count 
              });

            } catch (err) {
                console.log("error=>", err);
                return res.status(404).json({ success: false, msg: "some error occured", 
               error: err })
            }
        case "acceptBooking":{...}
        case "ongoingBooking":{...}
        case "cancelBooking":{...}
        default:{...}
    }
    });