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

Datastore ListProperty query inconsistency

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

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

select * from example where numericRange<=4

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

select * from example where numericRange>=4

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

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

为什么它对第一个和第二个查询有效,但对第三个查询无效?

提前致谢。

Cloud Datastore 将您的索引列表展平。因此,您的查询 numericRange<=4 and numericRange>=4 正在检查索引以查看是否 (3<=4 and 3>=4),以及是否 (5<=4 and 5>=4)。如您所见,当 numericRange 在列表中的值恰好为 4.

时,您的第三个查询将仅 return 结果在索引中具有扁平化的值