mongoDB中的聚合如何由两个元素组成(在Java中)?
MongoDB看起来像: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
{ "_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);