如何在单个mongodb查询中使用sum,multiply,divide和group by aggregation

时间:2014-12-08 06:57:19

标签: mysql mongodb

我有以下mysql查询,其中我在两个不同的字段上进行了总和,称为“count”和“population”,然后将sum(count)/ sum(population)除以然后将其乘以100000,最后按年分组

Select year, cname, (sum(count)/sum(population))*100000 as total from cancer c where c.cname ="lung and bronchus" group by year;

我在mongodb中写过以下查询,但我不知道如何投射cname和year。

db.cancer_stats.aggregate([
       {$match:{cname: "lung and bronchus"}},
       {$group:{_id:"year"},
               {total:{$multiply:[$divide:[$sum:"$count", $sum:"population"], 100000]}}
        }])

任何人都可以指导我解决此问题吗?

1 个答案:

答案 0 :(得分:6)

我不确定“解决查询”是什么意思,但该查询在当前形式下无效。我想你想要一个如下的管道:

db.cancer_stats.aggregate([
    { "$match" : { "cname" : "lung and bronchus" } },
    { "$group" : { "_id" : "year", "t_count" : { "$sum" : "$count" }, "t_population" : { "$sum" : "$population" } } },
    { "$project" : { "result" : { "$multiply" : [100000, { "$divide" : ["$t_count", "$t_population"] } ] } } }
])

这会回答你的问题吗?