Сортировка цены в 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'
}]
пожалуйста помоги!
2 ответа
Решение
Так сортируются строки. Вам следует изменить поле Цена на число, если вы хотите, чтобы оно сортировалось как число, а не как строка. Монго никак не может предположить, что это число, когда это не так.
Просто поместите следующее в конец вашего кода;
data.sort(key = lambda item: float(item["price"]))