Мангуста.Получить максимальный идентификатор, когда идентификатор является строкой - PullRequest
0 голосов
/ 04 октября 2018

У меня есть таблица в базе данных (MongoDB), которая хранит одно поле id в виде строки, но это целое число (например, оригинал 12 -> в таблице '12').Теперь мне нужно получить максимальное значение в этом поле, но максимальное в контексте, что это число является целым числом.Пожалуйста, дайте мне решение, как это сделать?(Я не могу изменить тип поля в таблице)

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Если вы используете 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
    }
  }
])
0 голосов
/ 04 октября 2018

Один из возможных способов сделать это - агрегация:

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