Я немного новичок в mongodb, а также в java. Я хочу запросить время перерыва ключа и найти сумму значения.
db.users90.find().pretty()
{
"_id" : ObjectId("5ad5f2e2f58a542f7989e8fc"),
"date" : "2018-04-17",
"break" : [
{
"out" : "18:00",
"in" : "18:40",
"breaktime" : "0:40"
},
{
"out" : "19:00",
"in" : "19:30",
"breaktime" : "0:30"
}
]
}
Мне нужна помощь в java, чтобы добавить эти 2 ключа времени перерыва (в некоторых случаях это может быть n количество документов в перерыве) 0: 40 + 0: 30 = 0:70 минут
Спасибо, Мохан




Хотя запрос, который вам нужен, прост, хранение значений "времени перерыва" как String без всякой причины делает все трудным и сложным.
Итак, предполагая, что вы сохранили эти значения как числа например двойной, вы можете легко выполнить свой запрос на Java следующим образом;
AggregateIterable aggregationQuery = collection.aggregate(Arrays.asList(
new Document("$match", new Document("date","yourDate")), // match a document with a specific date
new Document("$unwind", "$break"), // decompose the 'break' array
new Document("$group", new Document("_id", null).
append("totalBreakTime", new Document("$sum","$break.breaktime"))
)));
if (aggregationQuery.iterator().hasNext()){
double totalBreakTime = ((Document)aggregationQuery.iterator().next()).get("break",Document.class).getDouble("breakTime");
}
Если вы хотите добавить их, почему вы храните их как строку?