在 MongoDB 中使用 $group 时如何在返回文档中获取附加字段?
Posted
技术标签:
【中文标题】在 MongoDB 中使用 $group 时如何在返回文档中获取附加字段?【英文标题】:How to get an additional field in return document when using $group in MongoDB? 【发布时间】:2020-06-13 04:16:06 【问题描述】:我想通过他们提交的订单找出公司中表现最好的销售代表。 因此,我在发票模型中按名称和总收入对销售代表进行了分组。发票模型表示销售代表提交的发票架构。
analytics.controller.js
exports.topBestSalesrep = (req,res)=>
Invoice
.aggregate(
[
$group :
_id : '$salesrepName',
totalSum:$sum:'$totalValue'
,
$sort:totalSum:-1
,
$limit : 10
,
//
// $project: _id:1, area:'$customerArea'
//
]
)
.then(data=>
return res.status(200).json(data);
)
.catch(err =>
return res.status(400).json(err);
)
invoice.model.js
salesrepName:
type: String
,
customerArea:
type:String,
required:true
,
totalValue:
type: Number,
required: true
,
我想要什么?
这里我想要返回文档中的salesrepName
和customerArea
字段。
我尝试了什么?
但即使我使用了$project
,我也只能在返回的文档中获得salesrepName
和totalSum
字段。
我的问题
如何在返回的文档中获取customerArea
字段?
【问题讨论】:
【参考方案1】:从记忆中输入,所以它可能是错误的语法,但是在 $group.in mongo docs 下查找 $push
$group :
_id : '$salesrepName',
totalSum:$sum:'$totalValue' ,
items: $push: $$ROOT // this emits the whole.object, becomes an array
,
然后您可以在后续阶段进一步预测您需要的值
【讨论】:
以上是关于在 MongoDB 中使用 $group 时如何在返回文档中获取附加字段?的主要内容,如果未能解决你的问题,请参考以下文章
在 MongoDB 的聚合管道中获取 $group 之后的输入文档中的字段
在 MongoDB 的聚合管道中获取 $group 之后的输入文档中的字段