商城网站开发实训报告,南京企业网站设计公司,浙江建设厅特种作业证查询,去国外做外卖网站好文章目录 MongoDB聚合运算符#xff1a;$let语法使用举例 MongoDB聚合运算符#xff1a;$let
$let聚合运算符绑定用于表示计算的变量#xff0c;并返回表达式的结果。
语法
{$let:{vars: { var1: expression, ... },in: expression}
}vars 用于在… 文章目录 MongoDB聚合运算符$let语法使用举例 MongoDB聚合运算符$let
$let聚合运算符绑定用于表示计算的变量并返回表达式的结果。
语法
{$let:{vars: { var1: expression, ... },in: expression}
}vars 用于在in表达式中变量的赋值块为变量赋值使用字符串指定变量名并为其关联一个表达式作为值。赋值块在in表达式外以及vars块内部都没有意义。in 要计算的表达式。
要访问聚合表达式中的变量需要在变量名称前添加双美元符号 ($$) 并用引号引起来。
使用
$let可以访问其表达式块之外定义的变量包括系统变量。
如果在vars块中修改外部定义变量的值则新值仅在in表达式中生效在in表达式之外变量保留其先前的值。
在vars赋值块中赋值的顺序并不重要变量赋值仅在in表达式内部有意义因此访问vars赋值块中的变量值是指在vars块外部而不是在同一vars块内部定义的变量的值。举例
{$let:{vars: { low: 1, high: $$low },in: { $gt: [ $$low, $$high ] }}
}在vars赋值块中$$low是指外部定义的变量low的值而不是同一vars块中定义的变量。如果low在$let达式块之外没有定义表达式无效。
举例
sales集合有下面的文档
{ _id: 1, price: 10, tax: 0.50, applyDiscount: true }
{ _id: 2, price: 10, tax: 0.25, applyDiscount: false }下面的聚合在$project管道阶段使用$let计算并返回每个文档的FinalTotal
db.sales.aggregate( [{$project: {finalTotal: {$let: {vars: {total: { $add: [ $price, $tax ] },discounted: { $cond: { if: $applyDiscount, then: 0.9, else: 1 } }},in: { $multiply: [ $$total, $$discounted ] }}}}}
] )聚合返回下面的结果
{ _id : 1, finalTotal : 9.450000000000001 }
{ _id : 2, finalTotal : 10.25 }