Node.js 如何合计用户支付的所有金额
我发现将订购商品的客户支付的所有金额相加是很困难的 订单模式Node.js 如何合计用户支付的所有金额,node.js,reactjs,mongodb,mongoose,Node.js,Reactjs,Mongodb,Mongoose,我发现将订购商品的客户支付的所有金额相加是很困难的 订单模式 const orderschema=new Mongoose.Schema({ 已创建:{type:Date,默认值:Date.now()}, 金额:{type:Number,默认值:0} 用户:[{type:Mongoose.Schema.ObjectId,ref:'Users'}] ... }) 路线 Get('/total amount',total amount) 控制器 Exports.total-amount=()=>
const orderschema=new Mongoose.Schema({
已创建:{type:Date,默认值:Date.now()},
金额:{type:Number,默认值:0}
用户:[{type:Mongoose.Schema.ObjectId,ref:'Users'}]
...
})
路线
Get('/total amount',total amount)
控制器
Exports.total-amount=()=>{
Order.find()。。。
}
我不知道在这里添加什么才能得到所有客户的总收入
使用NodeJS和MongoDB
感谢您的帮助您可以在这样的聚合阶段使用:
if(response[0].total)
res.status(200).send(response[0].total)
else
res.status(404).send()
- 第一个
all(没有$group
是对所有值进行分组)\u id
- 然后创建字段
,它是所有total
金额的总和
- 还有一个可选阶段,
只输出$project
字段总计
Exports.total - amount = (req, res) => {
Order.aggregate({
"$group": {
"_id": null,
"total": {
"$sum": "$amount"
}
}
}, {
"$project": {
"_id": 0
}
}).then(response => {
res.status(200).send(response)
}).catch(e => res.status(400).send())
}
注意:操作是使用mongoose模型完成的(在本例中为订单
)。调用aggregate
方法的方式与调用find
方法的方式相同,例如:而不是do
yourModel.find()
是
答复如下:
[
{
"total": 6
}
]
因此,您甚至可以更新控制器以添加如下if/else
块:
if(response[0].total)
res.status(200).send(response[0].total)
else
res.status(404).send()
您可以在如下聚合阶段中使用:
if(response[0].total)
res.status(200).send(response[0].total)
else
res.status(404).send()
- 第一个
all(没有$group
是对所有值进行分组)\u id
- 然后创建字段
,它是所有total
金额的总和
- 还有一个可选阶段,
只输出$project
字段总计
Exports.total - amount = (req, res) => {
Order.aggregate({
"$group": {
"_id": null,
"total": {
"$sum": "$amount"
}
}
}, {
"$project": {
"_id": 0
}
}).then(response => {
res.status(200).send(response)
}).catch(e => res.status(400).send())
}
注意:操作是使用mongoose模型完成的(在本例中为订单
)。调用aggregate
方法的方式与调用find
方法的方式相同,例如:而不是do
yourModel.find()
是
答复如下:
[
{
"total": 6
}
]
因此,您甚至可以更新控制器以添加如下if/else
块:
if(response[0].total)
res.status(200).send(response[0].total)
else
res.status(404).send()
谢谢@j.f.我想我还是很想念它。我不熟悉聚合。如何将其添加到控制器中。另外,我没有将db定义为order db.order.aggregate({“$group”:{“\U id”:null,“total”:{“$sum”:“$amount”}}},{“$project”:{“\U id”:0})我已经更新了我的答案。希望有帮助。谢谢。它起作用了。接受我诚挚的谢意谢谢你@j.f我想我还是很想念它。我不熟悉聚合。如何将其添加到控制器中。另外,我没有将db定义为order db.order.aggregate({“$group”:{“\U id”:null,“total”:{“$sum”:“$amount”}}},{“$project”:{“\U id”:0})我已经更新了我的答案。希望有帮助。谢谢。它起作用了。接受我诚挚的谢意