mongoose没有正确sorting数字

我在使用mongoose的mongodb数字sorting有问题。

我的数据看起来像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"} ] 

按sorting数字sorting时,结果为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){ }); 

你的问题是,正如你的数据所示:

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

price不是以数字forms存储,而是以stringforms存储。

您应该编辑您的源数据和/或您的Mongoose模型,或者获取未分类的数据,将价格转换为数字,然后进行sorting。

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

另外,确保在mongoDB中导入数据时,它们被视为数字。 当你打印数据时, price的内容不应该有"围绕它”。