gpt4 book ai didi

node.js - mongodb可以查询月、季、学期的销售额吗?

转载 作者:可可西里 更新时间:2023-11-01 10:21:48 31 4
gpt4 key购买 nike

是否可以在查询聚合中获取月、季度和半年的销售额总和,或者我分别进行每个查询?

无论模型如何,我的问题是您是否可以在单个查询中获取所有信息,还是我应该单独进行。

如果没有,获取此信息的最佳方式是什么?

最佳答案

根据文档字段的具体情况,这可以通过聚合框架完成,使用 matchprojectgroup 阶段。

作为示例,我假设有一个 Sales 文档,其中包含 date 字段和一个 amount 字段,它们应该聚合到获取给定期间的总销售额(月、季度和半年条件的相应日期变量也需要事先定义,例如从服务器 GET 请求中包含的查询参数)

Sales.aggregate()
.match(...include general non-date matches here, e.g. company, etc.)
.project({
'month': {
'$cond': { if: {
'$and': [
{ $gte: [ 'date', new Date(monthStartDate) ] },
{ $lte: [ 'date', new Date(monthEndDate) ] },
]}, then: 'amount', else: 0
}
},
'quarter': {
'$cond': { if: {
'$and': [
{ $gte: [ 'date', new Date(quarterStartDate) ] },
{ $lte: [ 'date', new Date(quarterEndDate) ] },
]}, then: 'amount', else: 0
}
},
'half': {
'$cond': { if: {
'$and': [
{ $gte: [ 'date', new Date(halfStartDate) ] },
{ $lte: [ 'date', new Date(halfEndDate) ] },
]}, then: 'amount', else: 0
}
}
})
.group({
_id: '_id',
month: { $sum: '$month' },
quarter: { $sum: '$quarter' },
half: { $sum: '$half' }
})
.exec(function(err, res) {
if (err) { reject(err) }
resolve(res)
})

关于node.js - mongodb可以查询月、季、学期的销售额吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38680806/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com