MongoDB $add 运算符介绍
MongoDB $add
运算符可以用于将多个数字相加,它可以接受任意数量的参数。 $add
运算符在聚合管道中的使用场景很多,比如计算总价、计算得分等等。
语法
$add
运算符的语法如下:
{ $add: [ <expression1>, <expression2>, ... ] }
其中,<expression>
是任意表达式,可以是数字、字段、算术表达式等。 $add
运算符将所有表达式相加并返回结果。
使用场景
$add
运算符常用于聚合管道中的 $project
、 $group
和 $addFields
阶段,用于将多个表达式相加并生成新的字段或值。
示例
示例 1:计算商品销售总价值
假设有一份包含商品销售记录的集合,记录了商品名称、销售数量和销售金额。现在要计算每个商品的销售总价值。以下是查询语句:
db.sales.aggregate([
{
$project: {
_id: 0,
name: 1,
totalValue: { $add: [{ $multiply: ["$qty", "$price"] }] }
}
}
])
以下是结果:
{ "name" : "A", "totalValue" : 100 }
{ "name" : "B", "totalValue" : 50 }
{ "name" : "C", "totalValue" : 60 }
{ "name" : "D", "totalValue" : 85 }
{ "name" : "E", "totalValue" : 95 }
示例 2:计算两个时间字段之间的时间差
假设有一份包含用户登录记录的集合,记录了用户 ID、登录时间和退出时间。现在要计算每个用户的登录时长。以下是查询语句:
db.logins.aggregate([
{
$project: {
_id: 0,
userId: 1,
timeDiff: {
$divide: [{ $subtract: ["$logoutTime", "$loginTime"] }, 1000 * 60]
}
}
},
{
$group: {
_id: "$userId",
totalLoginTime: { $add: "$timeDiff" }
}
}
])
以下是结果:
{ "_id" : 1001, "totalLoginTime" : 140 }
{ "_id" : 1002, "totalLoginTime" : 192 }
{ "_id" : 1003, "totalLoginTime" : 98 }
{ "_id" : 1004, "totalLoginTime" : 116 }
{ "_id" : 1005, "totalLoginTime" : 184 }
{ "_id" : 1006, "totalLoginTime" : 132 }
{ "_id" : 1007, "totalLoginTime" : 94 }
{ "_id" : 1008, "totalLoginTime" : 108 }
{ "_id" : 1009, "totalLoginTime" : 122 }
{ "_id" : 1010, "totalLoginTime" : 90 }
结论
$add
运算符可以用于将多个数字相加,它可以接受任意数量的参数。 $add
运算符在聚合管道中的使用场景很多,比如计算总价、计算得分等等。