我正在使用Google Cloud Datastore并成功存储了实体。
现在我正在尝试根据属性的存在来查询它们。 我使用"查询按GQL"数据存储区用户界面中的标签:https://console.cloud.google.com/datastore/entities/query/gql
对于某些实体,我在保存它时没有指定property
属性,所以我希望将它们设置为NULL
。
但是,当我查询SELECT * FROM Entity WHERE property IS NULL
时,不会返回任何结果。
答案 0 :(得分:2)
这是按预期工作的:
Null是一个值,而不是没有值。 无法确定实体是否缺少属性的值(即,属性是否没有值)。如果使用
nonexistent = NULL
形式的条件,将会检查是否为该属性显式存储了空值。例如,SELECT * FROM Task WHERE nonexistent = NULL
永远不会产生没有为属性nonexistent
设置值的实体。
因此,要明确检索property
设置为NULL
的实体,您必须为这些实体存储property: NULL
。
答案 1 :(得分:0)
你想要实现的目标是不可能的。 NULL与不存在的属性不同。
但正如Nick Johnson here提到的那样,
解决方法是为更新的属性提供默认值,并查询该值
我个人没试过,我不确定它是否有效,但我建议你尝试一下。
如果它不起作用,唯一的另一个选择是遍历模型的每个记录并使用默认值更新所有没有值的现有实体。