roscoe_x Asked: 2019-04-17 01:52:19 +0800 CST2019-04-17 01:52:19 +0800 CST 2019-04-17 01:52:19 +0800 CST Mongodb用字符串替换默认_id 772 我将 MongoDB 默认 _id 替换为字符串类型。现在我想对我的收藏品进行排序,排序后的结果 _id 是: 1 10 100 101 2 20 200 我想要像排序号这样的结果: 1 2 3 4 5 我的选择是什么?有没有办法像数字一样对字符串进行排序?或者我必须更改我的 _id 类型? mongodb sorting 1 个回答 Voted Best Answer Mani 2019-04-17T07:50:33+08:002019-04-17T07:50:33+08:00 我的选择是什么?有没有办法像数字一样对字符串进行排序? 是的,您可以选择像数字一样对字符串进行排序,但在所有查询中,您需要将字符串字段转换为整数字段以进行排序,不建议这样做。 db.collection.aggregate( [ { '$addFields': { '_id': { '$toInt': '$_id' } } }, { '$sort': { '_id': 1 } } ] ) 或者我必须更改我的 _id 类型? 是的,您需要将 _id 字段的类型从字符串更改为整数作为永久解决方案。由于 _id 字段是不可变字段,因此不能直接将 _id 字段的数据从字符串转换为整数。您需要删除所有文档并使用更正的数据类型插入。
是的,您可以选择像数字一样对字符串进行排序,但在所有查询中,您需要将字符串字段转换为整数字段以进行排序,不建议这样做。
是的,您需要将 _id 字段的类型从字符串更改为整数作为永久解决方案。由于 _id 字段是不可变字段,因此不能直接将 _id 字段的数据从字符串转换为整数。您需要删除所有文档并使用更正的数据类型插入。