中级网站开发工程师 试题,114黄页企业名录在哪里买,为网站做推广,谷歌没收录网站主页 301重定向$derivative聚合运算符返回返回指定窗口内的平均变化率#xff08;即求导#xff09;#xff0c;变化率使用以下公式计算#xff1a;
$setWindowFields阶段窗口中的第一个和最后一个文件。分子#xff0c;等于最后一个文档的表达式的值减去第一个文档表达式的值。分母即求导变化率使用以下公式计算
$setWindowFields阶段窗口中的第一个和最后一个文件。分子等于最后一个文档的表达式的值减去第一个文档表达式的值。分母等于最后一个文档sortBy字段值减去第一个文档sortBy字段值。
语法
{$derivative: {input: expression,unit: time unit}
}参数说明
expression 指定要指定的表达式表达式必须要能被解析为数值unit 字符串用于指定时间单位可以是week、day、hour、minute、second、millisecond。如果sortBy字段不是日期类型就必须忽略unit换而言之如果指定了unit那么sortBy就必须是日期类型字段。
使用
$derivative只能用于$setWindowFields阶段而且必须指定一个窗口。
举例
使用下面的脚本创建deliveryFleet集合其内容是以30秒为间隔的送货卡车的里程表读数
db.deliveryFleet.insertMany( [{ truckID: 1, timeStamp: new Date( 2020-05-18T14:10:30Z ), miles: 1295.1 },{ truckID: 1, timeStamp: new Date( 2020-05-18T14:11:00Z ), miles: 1295.63 },{ truckID: 1, timeStamp: new Date( 2020-05-18T14:11:30Z ), miles: 1296.25 },{ truckID: 1, timeStamp: new Date( 2020-05-18T14:12:00Z ), miles: 1296.76 },{ truckID: 2, timeStamp: new Date( 2020-05-18T14:10:30Z ), miles: 10234.1 },{ truckID: 2, timeStamp: new Date( 2020-05-18T14:11:00Z ), miles: 10234.33 },{ truckID: 2, timeStamp: new Date( 2020-05-18T14:11:30Z ), miles: 10234.73 },{ truckID: 2, timeStamp: new Date( 2020-05-18T14:12:00Z ), miles: 10235.13 }
] )本例在$setWindowFields阶段使用$derivative获得每辆卡车的平均车速单位是英里/小时并且使用$match阶段过滤掉车速小于50英里/每小时的卡车。
db.deliveryFleet.aggregate( [{$setWindowFields: {partitionBy: $truckID,sortBy: { timeStamp: 1 },output: {truckAverageSpeed: {$derivative: {input: $miles,unit: hour},window: {range: [ -30, 0 ],unit: second}}}}},{$match: {truckAverageSpeed: {$gt: 50}}}
] )在本例中
$setWindowFields阶段获取每辆卡车每小时英里数的平均车速 partitionBy: $truckID根据truckID对集合文档进行分区sortBy:{timeStamp:1}根据timeStamp字段对文档进行正向排序最早的里程表读数排在最前面output在窗口范围内使用$derivative将mailes的导数值赋予新的字段truckAverageSpeed。 input表达式为$miles作为求导计算的分子$derivative为timeStamp字段指定了hour为单位作为求导计算的分母窗口包含了下限-30秒前30秒的文档和0秒当前文档的时间戳之间的范围。这意味着$derivative返回卡车在30秒窗口中的速度英里/小时。 $match阶段使用大于运算符$gt筛选出平均速度大于50英里每小时的卡车。
在下面的输出中可以看出卡车1的速度显示在truckAverageSpeed字段卡车2的速度没有显示因为卡车2的速度未超过50英里每小时
{ _id : ObjectId(60cb8a7e833dfeadc8e6285c), truckID : 1,timeStamp : ISODate(2020-05-18T14:11:00Z), miles : 1295.63,truckAverageSpeed : 63.60000000002401 }
{ _id : ObjectId(60cb8a7e833dfeadc8e6285d), truckID : 1,timeStamp : ISODate(2020-05-18T14:11:30Z), miles : 1296.25,truckAverageSpeed : 74.3999999999869 }
{ _id : ObjectId(60cb8a7e833dfeadc8e6285e), truckID : 1,timeStamp : ISODate(2020-05-18T14:12:00Z), miles : 1296.76,truckAverageSpeed : 61.199999999998916 }