mongoDB中的聚合如何由两个元素组成(在Java中)?

mongoDB中的聚合如何由两个元素组成(在Java中)?,java,mongodb,Java,Mongodb,MongoDB看起来像: { "_id" : ObjectId("503d5024ff9038cdbfcc9da4"), "employee" : 61, "department" : "Sales", "amount" : 77, "type" : "airfare" } 在mongoDB控制台中,我可以通过两个参数(部门和类型)进行聚合: db.workers.aggregate(]{$group:{{department:$department,type:$ty

MongoDB看起来像:

{  "_id" : ObjectId("503d5024ff9038cdbfcc9da4"),
   "employee" : 61,
   "department" : "Sales",
   "amount" : 77,
   "type" : "airfare"
}
在mongoDB控制台中,我可以通过两个参数(
部门
类型
)进行聚合:

db.workers.aggregate(]{$group:{{department:$department,type:$type'},amount:{$sum:$amount'}}}])


如何在java中实现它?

您在shell中实现了这一点,问题是如何将其转换为java

db.workers.aggregate([{$group:{_id:{department:"$department",type:"$type"},
                               amount_sum:{$sum:"$amount"}}}])
这与

唯一的区别是,它们使用一个简单的DBObject作为
$group
\u id
部分,您需要制作一个文档作为
\u id
使用。更换线路:

DBObject groupFields = new BasicDBObject( "_id", "$department");
与:


你应该准备好了。

我不知道mongodb的语义,但如果你能告诉我你想在java中实现什么,我可以告诉你我想通过以下方式聚合的解决方案:
部门
类型
,计算
金额
$sum
。看看这里:
DBObject docFields = new BasicDBObject("department", "$department");
docFields.put("type", "$type");
DBObject groupFields = new BasicDBObject( "_id", docFields);