【发布时间】:2021-06-11 12:27:36
【问题描述】:
这里我有带有 details 字段作为数组的文档:
{
"_id" : ObjectId("60ae0b29ab282518443c7ac5"),
"details": [
{
"label": "Asset title",
"value": "S1",
},
{
"label": "Total Cost",
"value": "250",
},
{
"label": "Possession Status",
"value": "Available",
},
{
"label": "Estimated Monthly Rent",
"value": "15.5",
}
]
},
{
"_id" : ObjectId("60ae0b29ab282518443c7ac8"),
"details": [
{
"label": "Asset title",
"value": "S2",
},
{
"label": "Total Cost",
"value": "455.5",
},
{
"label": "Possession Status",
"value": "Available",
},
{
"label": "Estimated Monthly Rent",
"value": "30",
}
]
}
所以我试图通过映射对象数组来$project 这个对象数组并检查标签是“总成本”还是“估计月租”,然后我想将它们的字符串值转换为数字。例如:如果{label = "Total Cost"},则:{"$toDouble" : value},如果{label = "Estimated Monthly Rent"},则:{"$toDouble" : value}
我正在尝试,但出现错误。
db.collection.aggregate([
{
"$project": {
"data": {
"$map": {
"input": "$details",
"as": "val",
"in": {
"$cond":{ if: {"$$val.label": "Total Cost"} , then: { "$toDouble" : "$$val.value"}},
"$cond":{ if: {"$$val.label": "Estimated Monthly Rent"} , then: { "$toDouble" : "$$val.value"}}
}
}
}
}
}
])
【问题讨论】:
标签: javascript mongodb mongodb-query aggregation-framework