java - 带投影的聚合

标签 java mongodb aggregation-framework

尽管我不明白如何实现我的目标,但一直在搜索许多聚合方法。 AggregateIterable 中包含的文档以下代码中仅包含 2 个字段 _idcopiesAggregates.group(...)中所述。我将如何包含字段 field1field2还有吗?

AggregateIterable<Document> items = itemCollection.aggregate(Arrays.asList(
    Aggregates.project(include("_id","field1","field2")),
    Aggregates.group("$_id",Accumulators.sum("copies",1)),
    Aggregates.sort(descending("field1")))
);

我很茫然,因为我似乎找不到(或至少理解)任何例子。任何帮助将不胜感激,尤其是如何按照我的意愿进行操作的示例。

最佳答案

mongo 中的 $group agg 函数要求您显式包含任何输出列,并使用组友好的转换。如果你想在几个字段中使用 ghetto passthru,我相信有一个 $first 运算符可以发挥作用。

它与 c# linq group() 函数不同,无论如何都包含对象。如果您需要该功能(键的值集合中的各种不匹配的对象),则必须提前实例化结果,然后使用标准 linq 组函数。

关于java - 带投影的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53687011/

相关文章:

java - 我的方法的效率有问题。有什么建议吗?

java - SwingWorker 调用 JFrame 类 ..window 不显示任何内容

MongoDB - 如何合并文档的字典字段?

MongoDB 基于每个元素对来自多个文档的数组求和

node.js - Mongodb 查询显示 "only this field"而不必一一拒绝每个字段?

MongoDB: '$redact' 结果仅匹配嵌入对象

java - 递归函数提升二进制ARRAY

java - Opa:它如何识别服务器端或客户端脚本

linux - 创建 MongoDB 启动脚本

安装后 MongoDB 4.2 无法在 ubuntu 18.04 上启动 - 进程立即停止