我试图从使用聚合的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",
请任何人帮助我获得持续时间列的总和!!!
答案 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 }