有没有办法使用 @Query 来 return 一个 MongoDB $sum 结果?
Is there a way to use @Query to return a MongoDB $sum result?
我对 MongoDB 和 Whosebug 都很陌生(作为提问者)。对于如何使用 @Query 注释 (Count in Spring data mongodb repository) return 来自 Spring 存储库的 MongoDB "count" 投影,我看到了很好的回应。
计数示例基本上如下所示:
@Query(value = "{'productDetails.productType': {$regex: ?0, $options: 'i'}, 'sourceDescriptor': ?1}", count = true)
...方法 return 是一个整数。我想做类似的事情,但 int I return 是总和而不是计数。 @Query 注释看起来不像是为支持 sum() 操作而构建的,但这正是我需要的。
我担心我被淹没了,我必须遍历一组文档才能得到我需要的结果。
我有一组交易记录(例如借方和贷方、正数和负数)。这是交易数据的模拟:
[{ "action" : "AWARD", "amount" : 9000, "notes" : "Initial balance", "username" : "aa" },
{ "action" : "PAYOUT", "amount" : 1800, "notes" : "Earnings", "username" : "aa" },
{ "action" : "WITHDRAWAL", "amount" : -5000, "notes" : "Direct deposit /r#e#d#a#c#t#e#d/", "username" : "aa" },
{ "action" : "AWARD", "amount" : 7000, "notes" : "Initial balance", "username" : "bb" }]
我想使用存储库获取给定用户名的各种交易的净额(总和)。如果可能的话,我宁愿不 return 所有 Mongo 文档的列表并遍历它们以获得总和。
有没有办法使用@Query 注释来做到这一点?
这是我的第一个问题。如有失误请见谅
嗯,我认为@Query注解无法完成mongo聚合(如果我没记错的话,查询和聚合是不同类型的操作):(
您可能必须创建您的自定义方法并使用 Fluent Interfaces Spring 来实现它,例如,如果您想要 $sum,聚合将如下所示:
TypedAggregation<YourClass.class> agg = newAggregation(YourClass.class,
group("username").sum("amount").as("totalAmount"),
project("totalAmount"));
AggregationResults<YourResultClassContainingOnlyTotalAmount> result =
mongoTemplate.aggregate(agg, YourResultClassContainingOnlyTotalAmount.class)
希望对您有所帮助:)
我对 MongoDB 和 Whosebug 都很陌生(作为提问者)。对于如何使用 @Query 注释 (Count in Spring data mongodb repository) return 来自 Spring 存储库的 MongoDB "count" 投影,我看到了很好的回应。
计数示例基本上如下所示: @Query(value = "{'productDetails.productType': {$regex: ?0, $options: 'i'}, 'sourceDescriptor': ?1}", count = true)
...方法 return 是一个整数。我想做类似的事情,但 int I return 是总和而不是计数。 @Query 注释看起来不像是为支持 sum() 操作而构建的,但这正是我需要的。
我担心我被淹没了,我必须遍历一组文档才能得到我需要的结果。
我有一组交易记录(例如借方和贷方、正数和负数)。这是交易数据的模拟:
[{ "action" : "AWARD", "amount" : 9000, "notes" : "Initial balance", "username" : "aa" }, { "action" : "PAYOUT", "amount" : 1800, "notes" : "Earnings", "username" : "aa" }, { "action" : "WITHDRAWAL", "amount" : -5000, "notes" : "Direct deposit /r#e#d#a#c#t#e#d/", "username" : "aa" }, { "action" : "AWARD", "amount" : 7000, "notes" : "Initial balance", "username" : "bb" }]
我想使用存储库获取给定用户名的各种交易的净额(总和)。如果可能的话,我宁愿不 return 所有 Mongo 文档的列表并遍历它们以获得总和。
有没有办法使用@Query 注释来做到这一点?
这是我的第一个问题。如有失误请见谅
嗯,我认为@Query注解无法完成mongo聚合(如果我没记错的话,查询和聚合是不同类型的操作):(
您可能必须创建您的自定义方法并使用 Fluent Interfaces Spring 来实现它,例如,如果您想要 $sum,聚合将如下所示:
TypedAggregation<YourClass.class> agg = newAggregation(YourClass.class,
group("username").sum("amount").as("totalAmount"),
project("totalAmount"));
AggregationResults<YourResultClassContainingOnlyTotalAmount> result =
mongoTemplate.aggregate(agg, YourResultClassContainingOnlyTotalAmount.class)
希望对您有所帮助:)