gpt4 book ai didi

javascript - 如何在 mongodb 中映射对象数组并将字符串值转换为数字?

转载 作者:行者123 更新时间:2023-12-02 18:41:33 25 4
gpt4 key购买 nike

这里我有详细信息字段作为数组的文档:

 {   
"_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 这个对象数组,并检查标签是否为“总成本”或“估计月租金”,然后我想将它们转换为字符串值转为数字。例如: if {label = "Total Cost"} ,则: {"$toDouble": value} 并且 if {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"}}
}
}
}
}
}
])

最佳答案

使用$in运算符检查条件,如果匹配则返回转换后的值,否则返回现有对象

db.collection.aggregate([
{
"$project": {
"data": {
"$map": {
"input": "$details",
"as": "val",
"in": {
$cond: [
{ $in: ["$$val.label", ["Total Cost", "Estimated Monthly Rent"]] },
{
label: "$$val.label",
value: { $toDouble: "$$val.value" }
},
"$$val"
]
}
}
}
}
}
])

Playground

关于javascript - 如何在 mongodb 中映射对象数组并将字符串值转换为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67937042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com