代码之家  ›  专栏  ›  技术社区  ›  Siska Brilian

mongodb中的排序价格

  •  0
  • Siska Brilian  · 技术社区  · 8 年前

    我无法按价格排序数据。 我试过了,但结果并不像我预期的那样。

    代码测试:

    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 回复  |  直到 8 年前
        1
  •  1
  •   tbking    8 年前

    这是字符串的排序方式。如果希望将价格字段排序为数字而不是字符串,则应将其更改为数字。Mongo无法假设这是一个数字,而事实并非如此。

        2
  •  0
  •   Treehee    8 年前

    只需在代码末尾添加以下内容;

    data.sort(key = lambda item: float(item["price"]))