17

質問があります:

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: '',
    author: 'AHSwfYgeGmur9oHzu',
    visibility: 'public',
    _id: 'aDSN2XFjQPh9HPu4c' },
{ 
    title: 'unnamed-2',
    text: '<p>kkhjk</p>',
    tags: [],
    _id: 'iM9FMCsyzehQvYGKj',
    author: 'AHSwfYgeGmur9oHzu',
    visibility: 'public' },
{ 
    title: 'unnamed-3',
    text: '',
    tags: [],
    _id: 'zK2w9MEQGnwsm3Cqh',
    author: 'AHSwfYgeGmur9oHzu',
    visibility: 'public' }]

問題は、最初の数字でソートされているように見えるため、適切なシーケンスは 1、10、2、3 などであると考えられることです。 10が最後になります。

番号に 01 や 001 などの追加の番号を付けて、これを行うことは避けたいと思います。

どうすればいいですか?

4

6 に答える 6

5

数字を 0 で埋めると、正しい順序で文字列として検索できるようになるため、0,1,2,3,4,5,6,7,8,9,10,11... の代わりに使用します。 01,02,03,04,05,06,07,08,09,10,11... と文字列検索すると、それらが順番に返されます。

于 2014-12-29T23:27:21.900 に答える
4

@Eugene Kaurovが使用できると言ったように、mongoのドキュメントでは、この目標に照合を使用できると述べています

.collation({locale: "en_US", numericOrdering: true})

これは公式ドキュメントです: mongo ref

受け入れられた答えが今は正しくないことに注意してください

于 2020-09-18T10:42:41.960 に答える