MongoDB - 对字符串字段执行 $divide

问题描述 投票:0回答:2

我正在尝试对集合执行聚合查询。我想划分 2 个字段并检查这是否小于某个值。

这个数据库的制作方式,它的所有字段都是字符串,这不是我现在可以真正改变的。我想知道是否有办法将值转换为数字,也许使用 $let 或其他东西?

我目前收到错误

exception: $divide only supports numeric types, not String and String

这是我尝试运行的查询类型的示例:

db.myCollection.aggregate([{
    "$project": {
        "mins": {
            "$divide": ["$ALOWOVRLTOTL", "$FEESCALLCOST"]}
         }
     },
     "$match": {
         "mins": {
              "$lte": 40
          }
      }
}])
mongodb casting aggregation-framework
2个回答
0
投票

您将无法对非数值执行

divide
运算。一个可能的解决方案是运行更新并将
String
值解析为数值。

看看这个问题: 如何在mongodb中将字符串转换为数值


0
投票

需要注意异常情况。并相应地调整您的查询。

例外:$divide仅支持数字类型,不支持String和String

db.myCollection.aggregate([{
"$project": {
    "mins": {
        "$divide": [{'$toDouble': '$ALOWOVRLTOTL' }, {'$toDouble': '$FEESCALLCOST' }]}
     }
 },
 "$match": {
     "mins": {
          "$lte": 40
      }
  }
}])

根据您的具体情况,您可以将字符串值转换为多种类型。在下面找到您可以转换的类型列表。

  • $转十进制
  • $toDouble
  • $toInt
  • $至长

有关转换,请参阅 MongoDB 官方文档

© www.soinside.com 2019 - 2024. All rights reserved.