猫鼬。当id是一个字符串时获取最大id

时间:2018-10-04 16:13:18

标签: string mongodb mongoose max

我在数据库(MongoDB)中有一个表,该表将一个id字段存储为字符串,但它是整数(例如,表'12'中的原始12->)。现在,我需要在该字段上获取最大值,但在此数字为整数的情况下获取最大值。请给我解决方案怎么办? (我无法更改表格中的字段类型)

2 个答案:

答案 0 :(得分:0)

一种可行的方法是聚合:

db.collectionName.aggregate([{
    $convert: {
        input: "$intButStringKey",
        to: "int"
    }
}, {
    maxValue: {
        $max: "$intButStringKey"
    }
}])

答案 1 :(得分:0)

如果您使用的是 MongoDb 4.0 及更高版本,则可以在以下类似情况下使用$toInt

db.collection.aggregate([
  {
    $group: {
      "_id": "MYFIELD",
      "Max": {
        "$max": {
          "$toInt": "$MYFIELD"
        }
      }
    }
  }
])

或者您也可以使用$convert

db.collection.aggregate([
  {
    $group: {
      "_id": "MYFIELD",
      "Max": {
        "$max": {
          "$convert": { "input": "$MYFIELD", "to": "int" }
        }
      }
    }
  }
])

您还可以使用$addFields在聚合的早期添加该int字段:

db.collection.aggregate([
  {
    $addFields: {
      intField: {
        $toInt: "$MYFIELD"
      }
    }
  },
  {
    $group: {
      _id: "$max",
      max: {
        $max: "$intField"
      }
    }
  },
  {
    $project: {
      _id: 0
    }
  }
])