qq_36604562 2018-11-08 09:42 采纳率: 100%
浏览 926

通过java将Mongdodb数据相加并得出每个值平均值

图片说明 现在Mongdodb里面存了相同字段但是不同值的数 怎么用java将同key不同值的加起来并算储平均值 然后放到另一个Map里面 id和mn和时间我已经处理不要了 求其他字段的 谢谢了 另外字段是没有固定的 可能也会有其他相同的字段

  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-15 18:54
    关注

    参考GPT和自己的思路:

    好的,针对您的问题,您可以使用MongoDB的聚合查询来实现。

    具体步骤如下:

    1. 定义一个聚合查询管道:在Java中,您可以使用Aggregation类来创建聚合查询管道。

    2. 构建聚合查询管道:您可以使用几个聚合管道,每个管道用于将MongoDB文档转换为平均值或其他统计数据。您可以使用$group管道来将文档分组并执行聚合操作。

    3. 将查询结果保存到另一个Map中:一旦您获得了聚合结果,您可以将其放入另一个Map或其他数据结构中。

    以下是实现的Java代码示例:

    import com.mongodb.MongoClient;
    import com.mongodb.client.AggregateIterable;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    import org.bson.Document;
    import static com.mongodb.client.model.Aggregates.*;
    import static com.mongodb.client.model.Filters.*;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    
    public class MongoDBAggregateQuery {
      public static void main(String args[]) {
        //连接到MongoDB实例
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        MongoDatabase database = mongoClient.getDatabase("testdb");
    
        //获取MongoDB集合对象
        MongoCollection<Document> collection = database.getCollection("your_collection_name");
    
        //构建MongoDB聚合查询管道
        AggregateIterable<Document> aggResult = collection.aggregate(Arrays.asList(
                group("$fieldName", avg("$valueField"))
        ));
    
        //保存聚合查询结果到Map中
        Map<String, Double> resultMap = new HashMap<>();
        for (Document doc : aggResult) {
            String id = doc.getString("_id");
            Double avgValue = doc.getDouble("avgValue");
            resultMap.put(id, avgValue);
        }
    
        //打印查询结果
        System.out.println(resultMap);
    
        //关闭MongoDB连接
        mongoClient.close();
      }
    }
    

    请注意,您需要将代码中的"fieldName"替换为需要分组和聚合的字段名;将"valueField"替换为要聚合的值的字段名。还应替换"your_collection_name"为实际的MongoDB集合名称。

    希望这可以帮助您解决问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器