2016-08-30 143 views
1

我有一個問題在使用貓鼬的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"} 
] 

當我排序的倒序數字,導致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

看起來它按字母順序排序,你肯定'價格'是一個數組數組? – DrakaSAN

+0

是的,這裏是樣本數據 [{「date」:「2015-10-09 16:42:50」,「price」:「700」,「item」:「Milk」},{「date」: 「2016-08-04 00:46:13」,「價格」:「60」,「item」:「麪包」},{「date」:「2016-06-14 20:42:49」,「價格「:」50「,」item「:」Soap「}] –

+0

我正在討論mongoose/mongoDB模式。 – DrakaSAN

回答

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的內容周圍不應有任何"

+0

將模型模式中的字符串改爲數字,但結果相同。 –

+0

你的模特像是我發佈的模特嗎?你重新輸入了數據嗎? – DrakaSAN

+0

在mongodb控制檯,它顯示像這樣的「價格」:「37000」,我現在做什麼? 我有一個現有的SQL文件,如何導入到mongodb? –