给出以下记录:
{
"_id": "5ebe47995dc5b683d050c396",
"date": "2020-05-05 00:00:00",
"insertTime": "2020-05-15 15:41:13.039000",
"resultSummary": {
"total": [
{
"date": "2019-09-12 00:00:00",
"actualCost": 123,
},
{
"date": "2019-09-13 00:00:00",
"actualCost": 456,
}
]
}
}
我想使用Mongo聚合将actualCost
乘以100。
预期结果:
{
"_id": "5ebe47995dc5b683d050c396",
"date": "2020-05-05 00:00:00",
"insertTime": "2020-05-15 15:41:13.039000",
"resultSummary": {
"total": [
{
"date": "2019-09-12 00:00:00",
"actualCost": 12300,
},
{
"date": "2019-09-13 00:00:00",
"actualCost": 45600,
}
]
}
}
我尝试过的事情:
{'$set':
{'resultSummary.total.actualCost': {'$multiply': ['$resultSummary.total.$.actualCost', 100]},
}
}
但是Mongo似乎无法识别$并给出
Error: FieldPath field names may not start with '$'
答案 0 :(得分:0)
由于resultSummary.total
是array
,因此我们无法应用$multiply
运算符。而是使用$map
运算符并分别应用乘法。
尝试这个:
db.collection.aggregate([
{
$addFields: {
resultSummary: {
total: {
$map: {
input: "$resultSummary.total",
as: "total",
in: {
"date": "$$total.date",
"actualCost": {
$multiply: [
"$$total.actualCost",
100
]
}
}
}
}
}
}
}
])