如何解决MongoDb:如何将分组依据的总计数作为固定计数而不是数组?
这对我来说很难说出来,因此我将尝试通过一个代码示例进行解释:
db.collection.aggregate([
{
"$facet": {
"countByStatus": [
{
"$group": {
"_id": "$status.name","count": {
"$sum": 1
}
}
}
],"totalCount": [
{
"$group": {
"_id": null,"count": {
"$sum": 1
}
}
}
]
}
}
])
输出:
[
{
"countByStatus": [
{
"_id": "Approved","count": 2
},{
"_id": "Rejected","count": 1
}
],"totalCount": [
{
"_id": null,"count": 3
}
]
}
]
所需的输出:
[
{
"countByStatus": [
{
"_id": "Approved","totalCount": 3 //totalCount is a flat count instead of array here
}
]
我可以执行查询以获取结果,然后选择array[0].count
的第一个元素,但是我想知道这是否可以本地完成吗?
解决方法
可以使用$let在一个阶段中完成:
{
$project: {
countByStatus: 1,totalCount: {
$let: {
vars: { first: { $arrayElemAt: [ "$totalCount",0 ] } },in: "$$first.count"
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。