Database

[{"device":"device1","SourceTimeUtc":ISODate("2023-01-11T06:07:47.280Z"),"reader":"x","measurement":"temperature"},{"device":"device1","SourceTimeUtc":ISODate("2023-01-11T06:07:47.280Z"),"reader":"x","measurement":"humidity"},{"device":"device1","SourceTimeUtc":ISODate("2023-01-17T06:07:47.280Z"),"reader":"x","measurement":"humidity"},{"device":"device1","SourceTimeUtc":ISODate("2022-01-11T06:07:47.280Z"),"reader":"x","measurement":"humidity"},{"device":"device1","SourceTimeUtc":ISODate("2023-01-11T06:07:47.280Z"),"reader":"y","measurement":"humidity"},{"device":"device1","SourceTimeUtc":ISODate("2023-01-11T06:07:47.280Z"),"reader":"y","measurement":"temperature"},]

Query

db.collection.aggregate([{$match:{"device":"device1","SourceTimeUtc":{"$lte":ISODate("2023-01-11T06:07:47.280Z")},measurement:{$in:["temperature","humidity"]},"reader":{$in:["x","y"]}}},{$facet:{tempX:[{$match:{"reader":"x","measurement":"temperature"}},{$limit:1}],tempY:[{$match:{"reader":"y","measurement":"temperature"}},{$limit:1}],humX:[{$match:{"reader":"x","measurement":"humidity"}},{$limit:1}]}},{$project:{tempX:{$first:"$tempX"},tempY:{$first:"$tempY"},humX:{$first:"$humX"}}}])

Result