MongoDB:合并两列并转换类型
MongoDB: merge two columns and convert type
在每个文档中,有两列分别表示价格的整数和小数:
{
"prod_id": "1022"
"whole_price": "10",
"decimal_price": "50"
}
...
我如何通过聚合管道合并这两列,从而正确地将每对文档的价格表示为值为 10.5 的浮点数?
{
"prod_id": "1022"
"complete_price": 10.5
}
...
您可以在 $project
阶段使用 $toDouble
和 $concat
以获得所需的输出:
此查询输出字段 complete_price
,它是连接的值和一个“.”创造双重价值。然后解析为 double 以作为数字而不是字符串。
db.collection.aggregate([
{
"$project": {
"prod_id": 1,
"complete_price": {
"$toDouble": {
"$concat": [
"$whole_price",
".",
"$decimal_price"
]
}
}
}
}
])
示例here
编辑:
此外,如果您的数据不稳定,您可以使用 $convert
(而不是直接使用 $toDouble
),它具有 onError
和 onNull
,例如 this example
在每个文档中,有两列分别表示价格的整数和小数:
{
"prod_id": "1022"
"whole_price": "10",
"decimal_price": "50"
}
...
我如何通过聚合管道合并这两列,从而正确地将每对文档的价格表示为值为 10.5 的浮点数?
{
"prod_id": "1022"
"complete_price": 10.5
}
...
您可以在 $project
阶段使用 $toDouble
和 $concat
以获得所需的输出:
此查询输出字段 complete_price
,它是连接的值和一个“.”创造双重价值。然后解析为 double 以作为数字而不是字符串。
db.collection.aggregate([
{
"$project": {
"prod_id": 1,
"complete_price": {
"$toDouble": {
"$concat": [
"$whole_price",
".",
"$decimal_price"
]
}
}
}
}
])
示例here
编辑:
此外,如果您的数据不稳定,您可以使用 $convert
(而不是直接使用 $toDouble
),它具有 onError
和 onNull
,例如 this example