Pregunta

Me he dado cuenta de un resultado extraño de una consulta que tengo problemas para entender. Parece como si adición de una orden () para una consulta es la limitación de los resultados que vuelva .

Aquí está mi interacción:

>>> 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)

Como se puede ver, un centenar de entidades no se han añadido entre las dos consultas. Parece que el orden () la instrucción limita el conjunto de resultados. Pero created_at es una propiedad necesaria y está presente en todas las entidades.

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

No hay excepciones. Así que ¿por qué la consulta con el fin de no volver a todas las entidades?

Por último, la investigación de si es malo datos:

>>> 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
¿Fue útil?

Solución

El problema ha desaparecido a pesar de no haber cambiado mi código. La mejor conjetura que tengo es que tal vez el índice cayó detrás, aunque había asumido que si consigo un retorno exitoso de put () y luego se actualizan los índices.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top