0

我有一个实体定义为:

a    Integer
b    Float
type     String 
type     STRING  <--- Indexed property

我运行一个没有排序的查询,它返回结果。

SELECT * FROM com_MyDomain WHERE type = 'GENERAL'

如果我添加排序,查询不会返回任何结果。

SELECT * FROM com_MyDomain WHERE type = 'GENERAL' ORDER BY b, a

我还有一个索引(应用引擎控制台中的服务状态)定义为:

<datastore-index kind="com_MyDomain"
    ancestor="false" source="manual">
    <property name="type" direction="asc" />
    <property name="b" direction="asc" />
    <property name="a" direction="asc" />
</datastore-index>
4

1 回答 1

1

我能想到的唯一一件事是您的实体没有 b 或 a 的值。

如此处所写:

缺少查询中指定的属性的实体将被忽略

相同种类的实体不需要具有相同的属性。要成为查询结果,实体必须为查询的过滤器和排序顺序中指定的每个属性都拥有一个值(可能为 null)。如果不是,则该实体会从用于执行查询的索引中省略,因此不会包含在查询结果中。

(来自 “查询限制”下的https://developers.google.com/appengine/docs/python/datastore/queries )

所以唯一合乎逻辑的事情似乎是您的数据没有填充 a 或 b 。

于 2014-07-30T14:39:48.730 回答