java - 如何将 AggregateIterable<Document> 值保存到 mongodB 中的 map ?

标签 java mongodb aggregation-framework

我是 MongoDB 新手。经过大量搜索后,我应用了如下聚合操作,并且它按预期工作:

AggregateIterable<Document> summary= collection.aggregate(
              Arrays.asList(
                      Aggregates.match(Filters.eq("financialEventType", "REFUND")),
                      Aggregates.group("_id",
                      Accumulators.sum("revenueHeader_Principal","$revenueHeader.Principal"),
                      Accumulators.sum("revenueHeader_ProductTax","$revenueHeader.Product Tax"),
                      Accumulators.sum("revenueHeader_Shipping","$revenueHeader.Shipping"),
                      Accumulators.sum("revenueHeader_ShippingTax","$revenueHeader.Shipping Tax"),
                      Accumulators.sum("revenueHeader_GiftWrap","$revenueHeader.Gift Wrap"),
                      Accumulators.sum("revenueHeader_GiftWrapTax","$revenueHeader.Gift Wrap Tax"),)
            )); 

LinkedHashMap<String, BigDecimal> revenueSummary = new LinkedHashMap<String, BigDecimal>();

现在我想按特定顺序将这些值保存在 RevenueSummary 中。但是如何迭代摘要或通过名称访问项目?

最佳答案

您可以使用 while 语句进行迭代。
注意:如果结果超过 1 个,您将保存最后文档值。

MongoCursor<Document> iterator = summary.iterator();
while (iterator.hasNext()) {
    Document next = iterator.next();

    //Copy from Document key-value
    revenueSummary.put("Principal", (BigDecimal) next.get("revenueHeader_Principal"));
    revenueSummary.put("ProductTax", (BigDecimal) next.get("revenueHeader_ProductTax"));
    //...
}

链接: https://www.programcreek.com/java-api-examples/index.php?api=com.mongodb.client.AggregateIterable

关于java - 如何将 AggregateIterable<Document> 值保存到 mongodB 中的 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59517472/

相关文章:

node.js - NPM 安装错误 (Package.JSON) 未更新

javascript - 无法迭代 mongodb 集合

mongodb - 多组 - 对数组内的每个值进行平均,而不会与另一个文档重复

Mongodb同时在多个字段上聚合(计数)

java - Spring MVC 请求映射不起作用

java - 手动创建 SOAP 请求 - 服务器接收空字符串作为参数

mongodb - 将新字段添加到集合中的当前文档时,Meteor.users.update 访问被拒绝

MongoDB - 按 id 查找文档,然后用键对其进行分组

java - Lombok 的构造函数功能

java - 使用javamail发送邮件时出错