面试题答案
一键面试使用max和min累加器函数找出订单金额的最大值和最小值
假设使用的是MongoDB,以下是聚合操作示例:
db.orders.aggregate([
{
$group: {
_id: null,
maxOrderAmount: { $max: "$order_amount" },
minOrderAmount: { $min: "$order_amount" }
}
}
]);
行为差异解释
- $max函数:在聚合操作的分组阶段,$max函数遍历每个分组中的文档,将当前文档的指定字段值与已记录的最大值进行比较。如果当前值大于已记录的最大值,则更新最大值。这样,最终得到的就是分组中文档指定字段(这里是order_amount)的最大值。
- $min函数:在聚合操作的分组阶段,$min函数遍历每个分组中的文档,将当前文档的指定字段值与已记录的最小值进行比较。如果当前值小于已记录的最小值,则更新最小值。最终得到的是分组中文档指定字段(order_amount)的最小值。
两者的主要差异在于比较逻辑,$max取较大值,$min取较小值。