对于普通的Mongodb查询,我可以找到答案(想想?),但是对于Java的这个特定用例,我什么都找不到...
我有一个类型化为以下对象的集合:
public class TestObj {
ObjectId id;
long value = 0;
// etc
}
我想得到集合中所有对象的value
字段的和。我该怎么做?
我目前的问题是,无论我做什么,集合中的聚合方法都返回TestObj
类型,而不是一个更通用的对象,我已经尝试了project
,但似乎没有任何效果。
当前代码:
public long getTotalValue(){
Object returned = this.getCollection().aggregate(
List.of(
Aggregates.group(null, Accumulators.sum("$value", 1))
)
);
//TODO:: get sum
return 0L;
}
1条答案
按热度按时间o7jaxewo1#
如果要计算有多少集合具有value字段,可以在聚合中使用count。
但是,如果您希望得到集合中value字段的值的总和,则可以使用mongoDb聚合进行如下计算
value是集合中字段的名称。
完整示例: