Google Cloud Datastore获取布尔值设置为false或null的实体?
问题描述:
我有一堆布尔字段,可以是true,false或null
(实际的空值)的实体。我需要检索所有将此字段设置为null或false的实体。我知道GCD不支持不相等的查询,但我认为通过查询字段不是true的所有实体可以工作。 它似乎工作,但我不知道它为什么有效。 null和false总是小于true?Google Cloud Datastore获取布尔值设置为false或null的实体?
答
任何这些工作:
test_query = Test.query(Test.bool != True).fetch()
test_query = Test.query(Test.bool.IN([False, None])).fetch()
test_query = Test.query(Test.bool < True).fetch()
在Python:
>>> None < False < True
True
答
数据存储不支持OR和=(不等于)运算符本身。
!=的Python实现是完全程序化的,并且在与其他查询操作一起使用时具有数量限制。
当提供[False,None]时,使用IN运算符搜索将导致多个查询在此调用中启动并合并到一个结果中。
'< True'操作不会找到没有任何值的属性(空值),因为它没有被索引,但会找到false和null值,这可以在单个查询中完成。
所以,最好的选择将是(JavaScript的):
let query = db.createQuery("SomeNamespace", "SomeKind")
.filter("property", "<", true);
哪个客户端库/语言是您使用? –