如何做网站的流量分析,建筑论坛网站,网站建设询价邀请函,泉州app网站开发MongoDB聚合运算符#xff1a;$subtract 文章目录 MongoDB聚合运算符#xff1a;$subtract语法使用举例数值相减日期相减从日期减去毫秒数 $subtract聚合运算符返回两个数值的差值#xff0c;或者返回两个日期相差的毫秒数#xff0c;或者日期与一个毫秒数相差的日期。 语法…MongoDB聚合运算符$subtract 文章目录 MongoDB聚合运算符$subtract语法使用举例数值相减日期相减从日期减去毫秒数 $subtract聚合运算符返回两个数值的差值或者返回两个日期相差的毫秒数或者日期与一个毫秒数相差的日期。 语法
{ $subtract: [ expression1, expression2 ] }运算时用第一个参数中减去第二个参数参数可以是任何可解析为数值或日期的表达式。从日期减去一个数值时日期必须是第一个参数。
使用
从MongoDB 5.0开始结果将与输入具有相同的类型除非无法用该类型准确表示。在这些情况下
如果结果可表示为64位整数则32位整数将转换为64位整数。如果结果无法表示为64位整数则32位整数将转换为双精度型。如果结果不能表示为64位整数则64位整数将转换为double。
举例
使用下面的脚本创建sales集合
db.sales.insertMany([{ _id : 1, item : abc, price : 10, fee : 2, discount : 5, date : ISODate(2014-03-01T08:00:00Z) },{ _id : 2, item : jkl, price : 20, fee : 1, discount : 2, date : ISODate(2014-03-01T09:00:00Z) }
])数值相减
下面的聚合操作使用$subtract运算符计算从price和fee小计中减去discount得到total
db.sales.aggregate( [ { $project: { item: 1, total: { $subtract: [ { $add: [ $price, $fee ] }, $discount ] } } } ] )操作返回下面的结果
{ _id : 1, item : abc, total : 7 }
{ _id : 2, item : jkl, total : 19 }日期相减
下面的聚合使用 $subtract 表达式从当前日期减去$date并以毫秒为单位返回差值当前日期用系统 NOW从 4.2 开始可用
db.sales.aggregate( [ { $project: { item: 1, dateDifference: { $subtract: [ $$NOW, $date ] } } } ] )也可以使用Date()来获取当前日期
db.sales.aggregate( [ { $project: { item: 1, dateDifference: { $subtract: [ new Date(), $date ] } } } ] )这两种方式返回相同的结果
{ _id : 1, item : abc, dateDifference : NumberLong(186136746187) }
{ _id : 2, item : jkl, dateDifference : NumberLong(186133146187) }从日期减去毫秒数
下面的聚合使用$subtract表达式从$date字段减去5分钟的毫秒数5*60*1000
db.sales.aggregate( [ { $project: { item: 1, dateDifference: { $subtract: [ $date, 5 * 60 * 1000 ] } } } ] )操作返回下面的结果
{ _id : 1, item : abc, dateDifference : ISODate(2014-03-01T07:55:00Z) }
{ _id : 2, item : jkl, dateDifference : ISODate(2014-03-01T08:55:00Z) }