Mel*_*lop 8 mongodb aggregation-framework
我正在使用MongoDB聚合框架,需要获取金额字段的绝对值,我在项目部分和组部分中使用,ex:
'$project' => {
'amount' => 1,
'_id' => 0
}
Run Code Online (Sandbox Code Playgroud)
....
'$group' => {
'total' => {'$sum' => '$amount'}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您如何获取"金额"字段的绝对值?我无法在文档中找到它(也许它不可用?)
Joh*_*yHK 12
它不能直接使用,但可以使用一个做$cond运营商和$subtract内部的$project这样的(如JavaScript对象):
{ $project: {
amount: {
$cond: [
{ $lt: ['$amount', 0] },
{ $subtract: [0, '$amount'] },
'$amount'
]
}}}
Run Code Online (Sandbox Code Playgroud)
因此,如果amount < 0,则0 - amount使用,否则amount直接使用.
UPDATE
从MongoDB 的3.2版本开始,您可以使用新的$abs聚合表达式运算符直接执行此操作:
{ $project: { amount: { $abs: '$amount' } }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |