我使用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){
});
答案 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
的内容不应包含任何"
。