Mongokit — Найти последнюю добавленную запись

#python #mongokit

#python #mongokit

Вопрос:

Использование Mongokit с Python. Возникли некоторые проблемы с получением последнего n количества записей. Не уверен в синтаксисе, который Python хочет здесь точно, но у меня есть:

 record = collection.find(sort = [{'timestamp': DESCENDING}],limit=10)
  

Что выдает мне ошибку:

 Traceback (most recent call last):
  File "C:Python26libsite-packagesflask-0.6-py2.6.eggflaskapp.py", line 874, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:Python26libsite-packagesflask-0.6-py2.6.eggflaskapp.py", line 864, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "C:Python26libsite-packagesflask-0.6-py2.6.eggflaskapp.py", line 861, in wsgi_app
    rv = self.dispatch_request()
  File "C:Python26libsite-packagesflask-0.6-py2.6.eggflaskapp.py", line 696, in dispatch_reque
st
    return self.view_functions[rule.endpoint](**req.view_args)
  File "E:My DropboxCranktrainBlogcrankblogappsadminviews.py", line 24, in panel
    record = collection.find(sort = [{'timestamp': DESCENDING}],limit=10)
  File "C:Python26libsite-packagesmongokit-0.5.13.1-py2.6.eggmongokitcollection.py", line 67,
in find
    return Cursor(self, *args, **kwargs)
  File "C:Python26libsite-packagesmongokit-0.5.13.1-py2.6.eggmongokitcursor.py", line 35, in _
_init__
    super(Cursor, self).__init__(*args, **kwargs)
  File "C:Python26libsite-packagespymongo-1.9-py2.6-win32.eggpymongocursor.py", line 95, in __
init__
    self.__ordering = sort and helpers._index_document(sort) or None
  File "C:Python26libsite-packagespymongo-1.9-py2.6-win32.eggpymongohelpers.py", line 65, in _
index_document
    for (key, value) in index_list:
ValueError: need more than 1 value to unpack
  

Любая помощь была бы отличной.

Ответ №1:

Вы должны предоставить ему [(field, direction), ...] список, а не dict.

Спецификации сортировки обязательно должны быть упорядочены; dicts не упорядочены.

Не уверен, что вам нужно использовать список, попробуйте просто (field, direction) .

Комментарии:

1. Да, это работает. Однако для этого требуется список (ключ, направление), в противном случае он расстраивается из-за ошибки типа.