MongoDB聚合运算符:$locf
$locf
聚合运算符是(Last observation carried forward)的缩写,即末次观测值转结法的缩写,是统计学上常用的一种填充缺失值的方法。具体是将窗口中空字段和缺失字段的值设置为该字段的最后一个非空值。$locf
只能用于$setWindowFields
阶段。
语法
{
$locf: <expression> }
使用
如果正在填充的字段同时包含空值和非空值,$locf
根据$setWindowFields
中指定的排序顺序将null
值和缺失值设置为字段的最后一个非null
值。
对于排序后在非空值之前的null
和缺失字段值仍为null
。
如果要填充的字段在分区中只有空值或缺失值,$locf
将分区内该字段值都设置为null
。
对比$fill
和$locf
使用末次观测值转结法填充缺失的字段值,可以:
- 在
$fill
阶段用{ method: "locf" }
。在使用$fill
阶段时,在输出中指定的字段与用作源数据的字段相同。 - 在
$setWindowFields
阶段使用$locf
操作符。在使用$locf
时,可以为与用作源数据的不同字段设置值。
举例
使用下面的脚本创建stock
集合,包含每小时跟踪单个公司的股票价格:
db.stock.insertMany( [
{
time: ISODate("2021-03-08T09:00:00.000Z"),
price: 500
},
{
time: ISODate("2021-03-08T10:00:00.000Z"),
},
{
time: ISODate("2021-03-08T11:00:00.000Z"),
price: 515
},
{
time: ISODate("2021-03-08T12:00:00.000Z")
},
{
time: ISODate("2021-03-08T13:00:00.000Z")
},
{
time: ISODate("2021-03-08T14:00:00.000Z"),
price:</