Я выполнения запроса в MongoDB, который дает следующий результат:MongoDB - сохранения значения в JSONObject
{
"_id" : "180",
"total" : 1
},
{
"_id" : "181",
"total" : 1
},
{
"_id" : "182",
"total" : 29
}
Здесь я пропусканием верхний предел _id как 186 и нижним пределом, как 180 .
Таким образом, запрос выполняет поиск _id и передает значение.
Но я хочу сохранить результат следующим образом. Отсутствующий _id следует хранить 0.
{
"_id" : "180",
"total" : 1
},
{
"_id" : "181",
"total" : 1
},
{
"_id" : "182",
"total" : 29
},
{
"_id" : "183",
"total" : 0
},
{
"_id" : "184",
"total" : 0
},
{
"_id" : "185",
"total" : 0
},
{
"_id" : "186",
"total" : 0
}
Я пытаюсь вставить значения после получения результата в Java в следующим образом.
деньST и деньSTP верхний и нижний предел _id.
output = table.aggregate(pipeline);
for (final DBObject res : output.results())
{
for (;dayST<daySTP;dayST++)
{
int _id1 = Integer.parseInt(res.get("_id").toString());
if(dayST == _id1)
{
data.add(new Gson().fromJson(res.toString(), JsonObject.class));
}
else
{
final JsonObject dataForNoResults = new JsonObject();
dataForNoResults.addProperty("_id", dayST);
dataForNoResults.addProperty("totalcount", 0);
data.add(dataForNoResults);
}
}
}
Но это дает следующий результат:
{"_id":"180","totalcount":1},
{"_id":181,"totalcount":0},
{"_id":182,"totalcount":0},
{"_id":183,"totalcount":0},
{"_id":184,"totalcount":0},
{"_id":185,"totalcount":0},
{"_id":186,"totalcount":0}
Я знаю, логика в моих петель не correct.Can кто-то пожалуйста указать на это?
Edit: я решил его с помощью этого:
ArrayList<Integer> ar = new ArrayList<Integer>();
ArrayList<Integer> br = new ArrayList<Integer>();
output = table.aggregate(pipeline);
for (final DBObject res : output.results())
{
data.add(new Gson().fromJson(res.toString(), JsonObject.class));
ar.add(Integer.parseInt(res.get("_id").toString()));
}
while(dayST<daySTP)
{
if(!ar.contains(dayST)){
br.add(dayST);}
dayST++;
}
for(int i = 0;i< br.size();i++)
{
final JsonObject dataForNoResults = new JsonObject();
dataForNoResults.addProperty("_id", br.get(i));
dataForNoResults.addProperty("totalcount", 0);
data.add(dataForNoResults);
}
Есть ли лучшее решение?
Это также не работает. –
{"_id": "180", "totalcount": 1}, {"_ id": "181", "totalcount": 1}, {"_ id": "182", "totalcount": 29}, { "_id": 183, "TotalCount": 0}, { "_ идентификатор": 184, "TotalCount": 0}, { "_ идентификатор": 185, "TotalCount": 0}, { "_ идентификатор": 186, "TotalCount ": 0}, {" _ id ": 187," totalcount ": 0}, {" _ id ": 188," totalcount ": 0}, {" _ id ": 189," totalcount ": 0} –
дает этот результат когда _id задано как 180 и 186 –