尽管我不明白如何实现我的目标,但一直在搜索许多聚合方法。 AggregateIterable
中包含的文档以下代码中仅包含 2 个字段 _id
和copies
如Aggregates.group(...)
中所述。我将如何包含字段 field1
和field2
还有吗?
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/