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),它具有 onErroronNull,例如 this example