我必须将行与数字相乘,然后对数据进行过滤。
我必须将SAL
字段中的薪水乘以12作为年度总数,然后找出哪个大于30k。
我已经尝试了乘法,但在获得无法过滤的数据后,我也尝试使用匹配关键字。
db.EMP.aggregate({$group:{_id:"$ENAME",Remuneration:{$sum:{$multiply:["$SAL","$COMM"]}}}})
db.EMP.aggregate([{$project:{total:{$multiply:["$SAL",12]}}} ,{$match:{"$total":{$gte:3000}}}] )
db.EMP.aggregate([{$project:{total:{$multiply:["$SAL",12]}}} ,{$gt:{"$total",30000}}] )
MongoDB的数据:
发布于 2019-05-10 03:37:58
您使用$match
的查询非常接近,但是您应该使用total
而不是$total
,因为根据the $match docs
$match查询语法与读操作查询语法相同;即$match不接受原始聚合表达式。
所以你的管道应该是:
db.EMP.aggregate([
{ $project: { total : { $multiply : ["$SAL", 12 ] } } },
{ $match: { total : { $gt: 30000 } } }
])
https://stackoverflow.com/questions/56062016
复制相似问题