Database

[{"timestamp":ISODate("2024-01-01T00:00:00Z"),"schema":"1.0.0","value":3},{"timestamp":ISODate("2024-01-01T01:00:00Z"),"schema":"1.2.0","value":-10}]

Query

db.collection.aggregate([{"$group":{"_id":{"bucket":{$toDate:{$subtract:[{$toLong:"$timestamp"},{$mod:[{$toLong:"$timestamp"},86400000]}]}}},"value":{$accumulator:{accumulate:"function (state, value, timestamp, schema) { const keepState = Math.abs(state.value) > Math.abs(value); return { value: keepState ? state.value : value, timestamp: keepState ? state.timestamp : timestamp, schema: keepState ? state.schema : schema}; }",accumulateArgs:["$value","$timestamp","$schema"],finalize:"function (state) {return state;}",init:"function () { return { value: null, timestamp: null, schema: null }; }",lang:"js",merge:"function (state1, state2) { return {value: Math.abs(state1.value) > Math.abs(state2.value) ? state1 : state2 };}"}}}},{"$project":{"_id":0,"bucket":"$_id.bucket","value":1}}])

Result