Сортировка цены в 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"]))
Другие вопросы по тегам