尽管我不了解如何实现目标,但还是通过多种聚合方法进行搜索。以下代码的AggregateIterable
中包含的文档仅包含_id
中提到的2个字段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")))
);
我无所适从,因为我似乎找不到(或至少理解)任何例子。任何帮助将不胜感激,特别是我希望如何做的一个例子。
答案 0 :(得分:1)
mongo中的$ group agg函数要求您还使用对组友好的转换来显式包括所有输出列。如果您想让贫民窟在某些领域通行,我相信可以使用$ first运算符。
它与包含对象的c#linq group()函数不同。如果需要该功能(键的值集合中有许多不匹配的对象),则必须先实例化结果,然后使用标准的linq group函数。
答案 1 :(得分:0)
以下是使用first()
运算符进行工作的示例。
AggregateIterable<Document> items = Main.itemCollection.aggregate(Arrays.asList(
Aggregates.project(fields(include("field1","field2"),excludeId())),
Aggregates.group(
"$field1",
first("field2","$field2r")
Accumulators.sum("Copies",1)
),
Aggregates.sort(descending("_id"))
));