猫鼬没有正确排序数字

时间:2016-08-30 19:43:01

标签: node.js mongodb mongoose

我使用mongoose进行mongodb号码排序时遇到问题。

我的数据看起来像50,3000,75,42000,400,100

[
  {"date":"2015-10-09 16:42:50","price":"700","item":"Milk"},
  {"date":"2016-08-04 00:46:13","price":"60","item":"Bread"},
  {"date":"2016-06-14 20:42:49","price":"50","item":"Soap"}
] 

当我按照desc顺序对数字进行排序时,会产生75,50,42000,400,3000,100

我期待42000,3000,100,75,50

我的代码

Orders.find({order_type:'buy',status:'instock'})
    .sort([['price', 'desc']])
    .limit(10)
    .exec(function(e, data){

});

1 个答案:

答案 0 :(得分:2)

您的问题是,如您的数据所示:

{
    "date":"2015-10-09 16:42:50",
    "price":"700", //Notice the " around the price
    "item":"Milk"
}

price不是作为数字存储,而是存储为字符串。

您应该编辑源数据和/或Mongoose模型,或者将数据分类,将价格转换为数字,然后排序。

{
    date: {type: String},
    price: {type: String},
    item: {type: Number}
}

同时确保在mongoDB中导入数据时,它们被视为数字。打印数据时,price的内容不应包含任何"

相关问题