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

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

参考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集合名称。

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