今天做一个程序进行将类型为string的字段进行数字排队。
首先我使用的是sort函数进行排序,我直接排序
1.png

DeviceModel.find(select)
            .sort({'name':1})
            .skip((body.pageNo - 1) * body.pageSize)
            .limit(body.pageSize)

直接使用sort排序发现数字不正确,如下图

2.png

这显然不是我们想要的123456排序结果。
经过查阅资料发现了collation函数,将代码改为

DeviceModel.find(select).collation( { locale: 'zh' ,numericOrdering:true} )
            .sort({'name':1})
            .skip((body.pageNo - 1) * body.pageSize)
            .limit(body.pageSize)

我们在来看看查询结果
4.png

这样就是我们想要的结果了

标签: mongoose, mongodb

添加新评论