Как получить выходные данные в формате списка, используя mongodb и Java?

#java #mongodb

#java #mongodb

Вопрос:

Я использую java и MongoDB для получения суммы значений определенного ключа.

Вот моя работа вокруг:

 ArrayList<BasicDBObject> pipeline = new ArrayList<BasicDBObject>();
JSONArray networkCapacityTrending = new JSONArray();
BasicDBObject cmdBody = new BasicDBObject("aggregate",networkRealtime.toString());
BasicDBObject match = new BasicDBObject();
//set query to DB 

pipeline.add(new BasicDBObject("$match", match));
pipeline.add(new BasicDBObject(new BasicDBObject("$group",
new BasicDBObject("_id", "$runtimeMillis").append("total",
new BasicDBObject("$sum", "$totInOutOctets")))));
pipeline.add(new BasicDBObject("$sort", new BasicDBObject("_id", 1)));
cmdBody.put("pipeline", pipeline);

// Put db command for execution in json array
networkCapacityTrending.put(db.command(cmdBody));
JSONObject obj;
JSONArray result = new JSONArray();
try {
    obj = networkCapacityTrending.getJSONObject(0);
    result = obj.getJSONArray("result");
} catch (JSONException e) {
    Logger.error("Error while getting network capacity trending "
      e.getMessage());
}
  

Это дает мне выходные данные в виде :

 [{_id: 1403259854796,total: 0},{_id: 1403259896382,total: 0},{_id: 1403265301824,total: 0}]
  

но я хочу выводить как
[[1403259896382,30],[1403259854796,10],[1403259854996,50]…]

как мне запросить документы, чтобы получить желаемый результат???

Комментарии:

1. Обработайте результат, выполнив итерацию по дочерним элементам списка, и создайте строку, содержащую идентификатор и добавленное общее значение. В чем именно проблема?

Ответ №1:

Вам просто нужно выполнить итерацию JSONArray и сформировать список, подобный этому:

    ArrayList<ArrayList<Long>> final_arr = new ArrayList<ArrayList<Long>>();
        for (int i = 0; i < result.length(); i  ) {
            ArrayList<Long> array_int = new ArrayList<Long>();
            int aInt = result.getJSONObject(i).getInt("total");
            array_int.add(result.getJSONObject(i).getLong("_id"));
            array_int.add(new Long(aInt));
            final_arr.add(array_int);
        }
   System.out.println(final_arr);
  

В приведенном выше коде result имеет JSONArray значение : [{_id: 1403259854796,total: 0},{_id: 1403259896382,total: 0},{_id: 1403265301824,total: 0}] как указано в вопросе.

И final_arr содержит желаемый результат: [[1403259854796, 0], [1403259896382, 0], [1403265301824, 0]]

Комментарии:

1. Но я хочу выводить как [[1403259896382,30],[1403259854796,10],[1403259854996,50]…]

2. @user3322141 выходные данные поступают в нужном вам формате, запустите и проверьте.

3. @user3322141 вы говорите о формате вашего вывода или о значениях??

4. о формате выходных данных. Я хочу использовать эти выходные данные для рисования диаграммы на веб-странице

5. Я не хочу, чтобы ключи _id и total были в данных