2017-08-30 16 views
0

価格でデータを並べ替えることができません。 価格の価値に基づいて価格を表示したい 私は試しましたが、結果は期待通りでした。mongodbの価格を並べ替え

コードテスト:

from pymongo import MongoClient 
client = MongoClient().ecome 
col = client['post_product'] 

data = [] 
GetData = col.find({'Category':'Handphone'}).sort([('Price', pymongo.ASCENDING)]).limit(10) 
for x in GetData: 
    listed = dict(
     title=x['Title'], 
     price=x['Price'] 
    ) 
    data.append(listed) 

print data 

と結果:

[{ 
    'price': '10', 
    'title': 'tresemse' 
}, { 
    'price': '200', 
    'title': 'muaral winner' 
}, { 
    'price': '30', 
    'title': 'troboca' 
}, { 
    'price': '400', 
    'title': 'brek yule' 
}, { 
    'price': '50', 
    'title': 'moun yus' 
}] 

私が期待した結果は次のとおりです。

[{ 
    'price': '10', 
    'title': 'tresemse' 
}, { 
    'price': '30', 
    'title': 'troboca' 
}, { 
    'price': '50', 
    'title': 'moun yus' 
}, { 
    'price': '200', 
    'title': 'muaral winner' 
}, { 
    'price': '400', 
    'title': 'brek yule' 
}] 

助けてください!

+1

[クエリ内のMongoDBの並べ替え?](https://stackoverflow.com/questions/45953079/mongodb-sort-within-the-query) – felix

+0

@felixの可能性の重複、明らかではない、この場合は、値段に基づいてデータをソートする –

+0

これは同じ問題です。あなたの 'price'フィールドは文字列なので、文字列としてアルファベット順にソートされます( – felix

答えて

1

これは、文字列のソート方法です。価格フィールドを数値にソートするには、値フィールドを数値に変更し、文字列としてソートする必要があります。モンゴがそうでないときにモンゴがそれを数字にする方法はありません。

+0

よく、ありがとう、あなたの答え。 私はそれを整数に変換しようとします。 –

0

あなたのコードの最後に次のコードを挿入してください。

data.sort(key = lambda item: float(item["price"])) 
関連する問題