$linearFill
Interpolates missing values in a sequence of documents using linear interpolation, useful for filling gaps in time-series or ordered data.
Syntax
{ $linearFill: { input: <expression>, sortBy: { <field>: <1 or -1> } } }
Parameters
input
objectrequiredField or expression to interpolate missing values for
sortBy
objectrequiredField and sort order (1 ascending, -1 descending) for interpolation
Examples
Interpolating missing sales data
Fill missing sales values using linear interpolation within store partitions
Query:
db.stores.aggregate([{ $match: { "company": { $in: ["First Up Consultants"] } } }, { $setWindowFields: { "partitionBy": "$name", "sortBy": { "storeOpeningDate": 1 }, "output": { "interpolatedSales": { "$linearFill": "$sales.totalSales" } } } }])
Output:
Stores with missing sales data filled using linear interpolation
Fill missing temperature readings
Interpolate missing values in time-series sensor data
Query:
db.sensors.aggregate([{ $setWindowFields: { "partitionBy": "$sensorId", "sortBy": { "timestamp": 1 }, "output": { "interpolatedTemp": { "$linearFill": "$temperature" } } } }])
Output:
Sensor readings with missing temperature values interpolated linearly