2016-08-30 11 views
1

私はモンゴーズのソートに問題があります。マングースが適切にソートされていない

私のデータは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

アルファベット順にソートされているようですが、 'price'は数字の配列ですか? – DrakaSAN

+0

はい、ここにサンプルデータがあります [{"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 "}] –

+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

価格変更モデル・スキーマのString to Numberですが、結果は同じです。 –

+0

あなたのモデルは私が投稿したモデルですか?データを再インポートしましたか? – DrakaSAN

+0

mongodbコンソールで、この "price"のように表示されます: "37000"、今何をしていますか? 私は既存のSQLファイルを持っていますが、どのようにmongodbにインポートするのですか? –

関連する問題