我是MongoDB的新手,正在尝试查询时将amount
字段从decimal
投射到double
。现在,我将$$ROOT
添加到数组中,然后对该数组进行切片以获取事务的子集。我认为当我推送到数组($group
阶段)或切片($project
阶段)之后,我大概可以转换它,但我不知道如何转换。有小费吗?最终目标是显示总和,计数和最近的交易(以后我需要添加排序逻辑)。
db.transactions.aggregate([
{$match:{}},
{$group:{
_id:null,
transactions:{
$push:"$$ROOT"
},
count:{$sum: 1},
sum: {$sum: "$amount"}
}},
{$project:{
_id:0,
summary:{ count: "$count", sum: {$convert:{input:"$sum",to:"double"}}},
transactions: {$slice:["$transactions", 2]}
}}
])
答案 0 :(得分:0)
我发现$facet允许我这样做:
db.transactions.aggregate([{
$facet:{
summary: [
{$match:{}},
{$group:{
_id:null,
count:{$sum: 1},
sum: {$sum: "$amount"}
}},
{$project:{
_id:0,
count: "$count",
sum: {$convert:{input:"$sum",to:"double"}}}
}
],
transactions: [
{$match:{}},
{$sort:{date:-1,timestamp:-1}},
{$limit:1},
{$addFields:{amount: {$convert:{input:"$amount",to:"double"}}}}
]
}
}]);