#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 были в данных