Mongodb按编号排序

时间:2014-06-10 19:12:36

标签: mongodb

我尝试按包含数字的字段进行排序,在执行.sort({title: 1})时,它会返回1,10,11,12,2,3,4之类的结果。我想让它像1,2,3,4,10,11,12那样返回,这可能直接来自mongo吗?

3 个答案:

答案 0 :(得分:3)

您可能正在对包含字符串而非数字的字段进行排序。 MongoDB按照自然顺序对数字进行排序,按字母顺序对字符串进行排序。

您需要将title字段的值转换为整数才能获得自然顺序。

这是对包含字符串和整数的字段a上的集合进行排序的示例结果。

{ _id: ObjectId("53975b47bff015b5a400097b"), a: 1 }
{ _id: ObjectId("53975b74bff015c524000864"), a: 9 }
{ _id: ObjectId("53975b5d74c5e23516000919"), a: 10 }
{ _id: ObjectId("53975b5d74c5e23516000200"), a: "1" }
{ _id: ObjectId("53975b8ebff01545bd0006b4"), a: "10" }
{ _id: ObjectId("53975b9e32105bb92f0007fd"), a: "9" }

答案 1 :(得分:0)

这可以帮助您按升序排序:-
str = '< a href="https://www.blabla/k20832 > word1 word2' start_Index=str.find('<') end_Index=str.find('>') print(str[:start_Index+1]+str[end_Index:])

:)

答案 2 :(得分:0)

router.get('/projectstatus/list', (req, res) => {    
    Addstatus
        .find()
        .sort({order: 1})
        .collation({locale: "en_US", numericOrdering: true})
        .then(addstatus => { res.json(addstatus) })
        .catch(err => { console.log("------------------Data is not found----------------\n") });;
});