gpt4 book ai didi

java - mongodb 数据库中的嵌套查询

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:12 26 4
gpt4 key购买 nike

我对 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 分钟

谢谢,莫罕

最佳答案

尽管您需要的查询很简单,但将“breaktime”值存储为 String 会使一切变得困难和复杂。

因此,假设您已将这些值存储为数字例如double,您可以像这样轻松地在 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");
}

关于java - mongodb 数据库中的嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com