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 有人懂怎么做大模型的客服系统吗?卡住了卡住了
  • ¥20 firefly-rk3399上启动卡住了
  • ¥15 如何删除这个虚拟音频
  • ¥50 hyper默认的default switch
  • ¥15 网站打不开,提示502 Bad Gateway
  • ¥20 基于MATLAB的绝热压缩空气储能系统代码咨询
  • ¥15 R语言建立随机森林模型出现的问题
  • ¥15 中级微观经济学,生产可能性边界问题
  • ¥15 TCP传输时不同网卡传输用时差异过大
  • ¥15 请各位看看我写的属于什么算法,或者有更正确的写法?