Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine Query/GqlQuery.order()是否限制结果集?_Google App Engine_Google Cloud Datastore_Gql - Fatal编程技术网

Google app engine Query/GqlQuery.order()是否限制结果集?

Google app engine Query/GqlQuery.order()是否限制结果集?,google-app-engine,google-cloud-datastore,gql,Google App Engine,Google Cloud Datastore,Gql,我刚刚注意到一个奇怪的查询结果,我很难理解。似乎向查询中添加order()会限制返回的结果 以下是我的互动: >>> SomeModel.all().filter('action =', 'foo').order('created_at').count(), SomeModel.all().filter('action =', 'foo').count() (192L, 293L) >>> SomeModel.all().filter('action

我刚刚注意到一个奇怪的查询结果,我很难理解。似乎向查询中添加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)
如您所见,在两个查询之间没有添加100个实体。似乎order()指令限制了结果集。但在处创建的
是必需的属性,并且存在于所有实体中

>>> 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()成功返回,那么索引就会更新。

看起来我总是做空100个实体,所以这可能是错误的数据。我会更新。如果您使用len(SomeModel.all().filter('action=','foo').order('created_at').fetch())而不是count,您还会遇到同样的问题吗?如果是,您可以尝试查看排序正在删除的实体类型。