我有一个查询:
ownUnnamedPages = Entries.find( { author : this.userId,title : {$regex: /^unnamed-/ }},{sort: { title: 1 }}).fetch()
这将返回以下排列的数组:
[ { title: 'unnamed-1',text: '<p>sdaasdasdasd</p>',tags: [],_id: 'Wkxxpapm8bbiq59ig',author: 'AHSwfYgeGmur9oHzu',visibility: 'public' },{ title: 'unnamed-10',text: '',visibility: 'public',_id: 'aDSN2XFjQPh9HPu4c' },{ title: 'unnamed-2',text: '<p>kkhjk</p>',_id: 'iM9FMCsyzehQvYGKj',{ title: 'unnamed-3',_id: 'zK2w9MEQGnwsm3Cqh',visibility: 'public' }]
问题是,它似乎排序在第一个数字字符,所以它认为正确的顺序是1,10,2,3,等….
我真正想要的是在整个数字部分进行排序,以便10个结束.
我不想这样做,通过增加数字,如01或001的数字.
我该怎么做?
解决方法
MongoDB不能按字符串存储的数字排序.您必须将数字作为整数存储在其自己的字段中,以前导零填充,或者在从数据库返回结果之后进行排序.