【问题标题】:Google App Engine - Datastore Viewer - GQL QueryGoogle App Engine - 数据存储查看器 - GQL 查询
【发布时间】:2015-12-22 09:17:48
【问题描述】:

我们有一个数据存储,我想了解一些信息,例如在特定日期和 GQL 日期之间销售的尺码。

所以基本上我想查看“项目”,一个用于大小和特定时间/时间范围的特定 KEY id

所以首先我只查询了第一部分(带有密钥 ID 的项目):

SELECT * FROM Item WHERE size = KEY('Size', xxxx)

有效。然后是日期范围

SELECT * FROM Item WHERE sold_date > DATETIME(2013-11-05 16:57:45) AND  sold_date < DATETIME('2013-11-10 16:57:45')

同样有效

然而,将这两者结合起来似乎是不可能的。例如:

SELECT * FROM Item WHERE size = KEY('Size', xxxx) AND sold_date > DATETIME('2013-11-05 16:57:45')

我该如何组合这些?

当我想查看一组尺寸时,查询也不起作用。比如

SELECT * FROM Item WHERE size = (KEY('Size', xxxx), KEY('Size',xxxx))

我该如何解决这个问题?

【问题讨论】:

  • “似乎不可能”...运行时会发生什么?你没有数据?你收到错误信息?这对于帮助理解您在这里所做的事情非常必要。同时,此处发布的答案看起来确实是正确的答案(另外,将来,请将 Stack questions 保留为每个帖子一个问题。如果您想从一组尺寸中进行选择,那就是一个问题。查询不起作用是另一个 :)。这有助于人们在未来找到您的问题,这是网站的重点(不仅仅是给您一个答案,而是为下一个遇到相同问题的编码人员提供答案:))

标签: google-app-engine gql


【解决方案1】:

要查询多个属性,您需要创建一个自定义索引(我建议先阅读文档:java / python)。例如(Java):

<datastore-index kind="Item">
    <property name="size" direction="asc" />
    <property name="sold_date" direction="asc" />
</datastore-index>

或yaml:

indexes:
- kind: Item
  properties:
  - name: size
  - name: sold_date

如果您想选择属性与集合匹配的实体,您需要使用IN

SELECT * FROM Item WHERE size IN ( key('Size', 'xxx'), key('Size','yyy') )

GQL reference

【讨论】:

    猜你喜欢
    • 2013-05-17
    • 2011-11-07
    • 1970-01-01
    • 2014-10-31
    • 2013-10-13
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多