【发布时间】:2015-07-17 09:36:30
【问题描述】:
我对 MongoDB 和 StackOverflow 都很陌生(作为提问者)。对于如何使用 @Query 注释 (Count in Spring data mongodb repository) 从 Spring 存储库返回 MongoDB“计数”投影,我看到了很好的响应。
基本上计数示例如下所示: @Query(value = "{'productDetails.productType': {$regex: ?0, $options: 'i'}, 'sourceDescriptor': ?1}", count = true)
...并且该方法返回一个int。我想做类似的事情,但我返回的 int 是一个总和而不是一个计数。 @Query 注解看起来不像是为支持 sum() 操作而构建的,但这正是我所需要的。
我担心自己被水洗了,我必须遍历一组文档才能得到我需要的结果。
我有一系列交易(例如借记和贷记、正数和负数)。这是交易数据的模拟:
[{ "action" : "AWARD", "amount" : 9000, "notes" : "初始余额", "username" : "aa" }, { "action" : "PAYOUT", "amount" : 1800, "notes" : "Earnings", "username" : "aa" }, { "action" : "WITHDRAWAL", "amount" : -5000, "notes" : "直接存款 /r#e#d#a#c#t#e#d/", "username" : "aa" } , { "action" : "AWARD", "amount" : 7000, "notes" : "初始余额", "username" : "bb" }]
我想使用存储库获取给定用户名的各种交易的净值(总和)。如果可能的话,我宁愿不返回所有 Mongo 文档的列表并遍历它们以获得总和。
有没有办法使用@Query 注解来做到这一点?
这是我的第一个问题。如果我偏离了目标,请原谅我。
【问题讨论】:
-
我希望尽可能提供帮助......这就是我试图在 Spring 存储库中复制的内容:db.accountTxns.aggregate([{$match:{username:'aa'} }, {$group:{_id:'$username', total: {$sum:'$amount'}}}])
标签: spring mongodb aggregation-framework spring-mongodb