【发布时间】:2019-01-06 18:39:54
【问题描述】:
我正在尝试在我的 MongoDB 后端运行一些聚合,在其中计算一个值,然后将该计算值添加到另一个值。第一步有效,但第二步产生的值为null,我试图了解原因以及如何解决它。
这是我的聚合的样子:
db.staff.aggregate({
$project: {
_id: 1,
"workloadSatisfactionScore": {
$cond: [ { $eq: [ "$workload.shiftAvg", 0 ] }, "N/A", { $divide: [ "$workload.shiftAvg", "$workload.weeklyShiftRequest.minimum" ] } ]
}
},
$project: {
_id: 1,
totalScore: {
$sum: [ "$workloadSatisfactionScore", 10 ]
},
}
})
即使第一个$project 阶段生成的文档具有数字结果或null 用于“workloadSatisfactionScore”,但在第二个$project 阶段之后,所有文档的“totalScore”值都为null。
我应该得到的是'workloadSatisfactionScore' 的值,加到 10。但正如我所说,对于所有文档,我得到的只是null。这里有什么不正确的地方?
例如,我的集合中的一个特定文档为“workloadSatisfactionScore”返回值0.9166666666666666。因此,当它插入第二个$project 阶段时,我希望'totalScore' 的值为10.9166666666666666。但是,正如我所说,我得到的是该文档和所有其他文档的 null。
【问题讨论】:
-
你试过
totalScore: { $add: [ "$workloadSatisfactionScore", 10 ] }而不是$sum吗? -
是的,我做到了。结果相同。
标签: mongodb aggregation-framework