Mongo使用sum组和条件在java中查找

时间:2017-10-11 10:47:47

标签: java mongodb

我有2个mongo数据库集合,我想加入它们,这对我使用查找工作正常 但在我查看之前,我想在一个带有条件的集合中进行分组和求和

Ex:收集A. ID, AMT, TYPE(1,2)

收集B. ID , TAMT1, TAMT2,

现在收集A. if(TYPE == 1)然后Sum(amt)为TAMT1 if(TYPE == 2)Sum(AMT)为TAMT2 group by ID,然后与Collection B进行比较

任何人都可以提示/指导我如何做到这一点

1 个答案:

答案 0 :(得分:0)

我们可以使用聚合管道运算符$group$sum 根据类型总结金额

让集合“a”具有以下文件

imageView.contentMode = .scaleAspectFill

Mongo Shell查询根据类型求和文档是

{ "_id" : ObjectId("59de286a5d9132bd0bf3e870"), "amt" : 100, "type" : 1 }
{ "_id" : ObjectId("59de286a5d9132bd0bf3e871"), "amt" : 200, "type" : 1 }
{ "_id" : ObjectId("59de286a5d9132bd0bf3e872"), "amt" : 1000, "type" : 2 }
{ "_id" : ObjectId("59de286a5d9132bd0bf3e873"), "amt" : 10000, "type" : 1 }
{ "_id" : ObjectId("59de286a5d9132bd0bf3e874"), "amt" : 1000, "type" : 2 }
{ "_id" : ObjectId("59de286a5d9132bd0bf3e875"), "amt" : 5000, "type" : 2 }

我们的样本集合上面的聚合查询的结果是

db.a.aggregate([{$group:{_id:"$type", total:{$sum:"$amt"}}}])

请注意,您必须将shell查询转换为Java查询