首页 > 解决方案 > Mongoose / mongoDB - 如何按字符串排序?

问题描述

有人可以帮助我如何在 mongo 上缩短字符串。

     [{
        "$group": {
            "_id": "$bulan",
            "total_vote": {
                "$sum": {
                    "$multiply": "$nilai"
                }
            },
            "count": {
                "$sum": 1
            }
        }
    }, {
        "$sort": {
            "_id": 1
        }
    }],

结果如下:

[
  { _id: '1', total_vote: 142, count: 23 },
  { _id: '11', total_vote: 50, count: 1 },
  { _id: '2', total_vote: 320, count: 160 },
  { _id: '3', total_vote: 94, count: 47 },
  { _id: '4', total_vote: 120, count: 60 },
  { _id: '5', total_vote: 650, count: 13 },
  { _id: '7', total_vote: 350, count: 7 },
  { _id: '8', total_vote: 102, count: 2 }
]

我坚持为什么 _id : 11 在 _id : 1 之后。

请如果有人可以帮助我解决这个问题。非常感谢。

标签: mongodbmongoose

解决方案


MongoDB 无法按存储为字符串的数字排序。这是解决方法

[
  {
    "$addFields": {
      newId: {
        $toInt: "$_id"
      }
    }
  },
  {
    "$sort": {
      newId: 1
    }
  },
  {
      $project:{
          newId:0
      }
  }
]

工作蒙戈游乐场


推荐阅读