数据存储列表属性查询不一致

时间:2018-03-05 16:41:54

标签: google-cloud-platform google-cloud-datastore

我正在尝试在名为“numericRange”的ListProperty字段上运行查询。对于此字段,有一行具有值[“3”,“5”]。我想验证值“4”是否属于此范围。

如果我在GQL控制台上运行下一个查询,数据存储区会返回结果(因为第一个值为“3”,匹配):

select * from example where numericRange<=4

如果我运行下一个查询,数据存储区也返回结果(因为第二个值为“5”,匹配):

select * from example where numericRange>=4

但是,如果我运行下一个查询,则数据存储区不会返回结果:

select * from example where numericRange<=4 and numericRange>=4

为什么它适用于第一个和第二个查询,但不适用于第三个查询?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

Cloud Datastore展平您的索引列表。因此,您的查询numericRange&lt; = 4和numericRange&gt; = 4正在检查索引以查看是否(3&lt; = 4和3&gt; = 4),以及if(5&lt; = 4和5&gt; = 4)。正如您所看到的,在索引中使用展平值时,第三个查询只会在numericRange在列表中的值恰好为4时返回结果。