首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询/GqlQuery .order()限制结果集?

查询/GqlQuery .order()限制结果集?
EN

Stack Overflow用户
提问于 2009-11-07 02:41:37
回答 1查看 322关注 0票数 0

我刚刚从一个查询中注意到一个奇怪的结果,我很难理解。似乎向查询中添加order()限制了我返回的结果。

下面是我的互动:

代码语言:javascript
运行
复制
>>> 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()指令似乎限制了结果集。但是created_at是必需的属性,并且存在于所有实体中。

代码语言:javascript
运行
复制
>>> count = 0
>>> for entity in SomeModel.all().filter('action =', 'foo'):
...   if not entity.created_at:
...     raise Exception, 'Not found!'
...   count += 1
...
>>> print count
361

没有例外。那么,为什么带有订单的查询不会返回所有实体呢?

最后,调查它是否是糟糕的数据:

代码语言:javascript
运行
复制
>>> 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-11 13:30:04

尽管没有修改我的代码,问题还是消失了。最好的猜测是,索引可能落后了,尽管我假设如果我从put()获得了成功的返回,那么索引就会被更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1691792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档