嵌套子文档字段的Mongodb聚合

时间:2015-11-26 09:36:51

标签: mongodb

我试图从使用聚合的mongo子文档中获取“持续时间”的总和, 在这里,我有import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.util.ArrayList; import java.util.Arrays; public class Json { public static void main(String[] args) { //JSONObject jObject = new JSONObject(); //Json json=new Json(); ArrayList al = new ArrayList(); al.add(1); al.add("Lokesh"); al.add("Gupta"); al.add(Arrays.asList("ADMIN", "MANAGER")); Gson gson = new Gson(); String st = gson.toJson(al); Gson gs = new GsonBuilder().create(); Json json = gs.fromJson(st, Json.class); System.out.println(json.toString()); } } 我需要通过匹配上例中的event_id =“5656b3655b9e5c8812000007”获得“持续时间”字段的总和。

示例:

event_id = "5656b3655b9e5c8812000007",

请任何人帮助我获得持续时间列的总和!!!

1 个答案:

答案 0 :(得分:1)

使用可以使用以下聚合查询:

db.collection.aggregate(
  {$unwind: '$history'},
  {$match: {'history.event_id': ObjectId("5656b3655b9e5c8812000007")}},
  {$unwind: '$history.data'},
  {$unwind: '$history.data.viopCalls'},
  {$group: {_id: null, duration: {$sum: '$history.data.viopCalls.Duration'}}}
)

结果:

{ "_id" : null, "duration" : 8 }