Запрос/GqlQuery .order(), ограничивающий результирующий набор?

StackOverflow https://stackoverflow.com/questions/1691792

Вопрос

Я только что заметил странный результат запроса, который мне трудно понять.Это выглядит так , как будто добавление order() к запросу ограничивает результаты, которые я получаю обратно.

Вот мое взаимодействие:

>>> SomeModel.all().filter('action =', 'foo').order('created_at').count(),
    SomeModel.all().filter('action =', 'foo').count()
(192L, 293L)

>>> SomeModel.all().filter('action =', 'foo').order('created_at').count(),
    SomeModel.all().filter('action =', 'foo').count()
(193L, 294L)

Как вы можете видеть, сотня объектов не была добавлена между двумя запросами.Похоже, что инструкция order() ограничивает результирующий набор.Но created_at является обязательным свойством и присутствует во всех сущностях.

>>> count = 0
>>> for entity in SomeModel.all().filter('action =', 'foo'):
...   if not entity.created_at:
...     raise Exception, 'Not found!'
...   count += 1
...
>>> print count
361

Никаких исключений.Так почему же запрос с заказом не вернул бы все объекты?

Наконец, выясняем, являются ли это неверными данными:

>>> print "ascending=%d no-filter=%d descending=%d" % (
      SomeModel.all().filter('action =', 'foo').order('created_at').count(),
      SomeModel.all().filter('action =', 'foo').count(),
      SomeModel.all().filter('action =', 'foo').order('-created_at').count())
ascending=79 no-filter=179 descending=173
Это было полезно?

Решение

Проблема исчезла, несмотря на то, что я не менял свой код.Лучшее предположение, которое у меня есть, это то, что, возможно, индекс отстал, хотя я предполагал, что если я получу успешный результат от put(), то индексы будут обновлены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top