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