我是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中。但是,我如何迭代摘要或访问项目的名称呢?
发布于 2019-12-29 12:17:23
您可以使用while语句进行迭代。
注意:如果有超过一个结果,您将保存最后一个文档值。
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
https://stackoverflow.com/questions/59517472
复制相似问题