我正在尝试在名为“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
为什么它适用于第一个和第二个查询,但不适用于第三个查询?
先感谢您。
Cloud Datastore会展开索引列表。因此,您的查询numericRange <= 4和numericRange> = 4正在检查索引以查看是否(3 <= 4和3> = 4),以及if(5 <= 4和5> = 4)。如您所见,索引中的值为flattened,当numericRange在列表中的值恰好为4时,第3个查询将仅返回结果。