I want to find the correct way to get a value

Here is my code
const matchObjSensor = {

      $match: {

        time: {

          $gte: eventStat.time.from,

          $lte: eventStat.time.to,


        dat: { $regex: "^" + eventStat.dat[1] },



    const projectObjSensor = {

      $project: {

        h: { $hour: { date: { $toDate: "$time" }, timezone: localTimeZone } },

        "meter.RadiationTemperature": 1,

        "meter.PVPannelTemperature": 1,




    const groupObjSensor = {

      $group: {

        _id: {

          hour: "$h",

          meter: "$meterId",


        lastRadiationTemp: {

          $last: "$meter.RadiationTemperature",


        lastModuleTemp: {

          $last: "$meter.PVPannelTemperature",




    const eventsResult1 = await EventModel.aggregate([





Now match object returns a set of documents that can be grouped or separated on the basis of meterId, I want to find RadiationTemp and PanelTemperature which can be found in only 1 type of meterId suppose “x”, the problem is when I use $last it often returns null at that hour because it takes into account a document where meterId is different not “x” and RadiationTemp field does not exist, now for an hour I only want to consider documents with meterId-x so $last does not return null which it does now because for an hour it also takes into account other documents where meterId is not x but the two fields are missing