0

我有一堆布尔字段,可以是true,false或null(实际的空值)的实体。我需要检索所有将此字段设置为null或false的实体。我知道GCD不支持不相等的查询,但我认为通过查询字段不是true的所有实体可以工作。 它似乎工作,但我不知道它为什么有效。 null和false总是小于true?Google Cloud Datastore获取布尔值设置为false或null的实体?

+0

哪个客户端库/语言是您使用? –

回答

1

任何这些工作:

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 
0

数据存储不支持OR和=(不等于)运算符本身。

!=的Python实现是完全程序化的,并且在与其他查询操作一起使用时具有数量限制。

当提供[False,None]时,使用IN运算符搜索将导致多个查询在此调用中启动并合并到一个结果中。

'< True'操作不会找到没有任何值的属性(空值),因为它没有被索引,但会找到false和null值,这可以在单个查询中完成。

所以,最好的选择将是(JavaScript的):

let query = db.createQuery("SomeNamespace", "SomeKind") 
    .filter("property", "<", true);