查询与空字段的比较

Dan*_*e B 3 go firebase google-cloud-firestore

我的 Firestore 集合包含带有字符串字段的文档,该字段可以为null

我期待如果我查询:

Collection("products").Where("producedDate", "<", "2018-01-15")
Run Code Online (Sandbox Code Playgroud)

我会得到“producedDate”早于“2018-10-15”的所有产品,包括那些“producedDate”为空的产品。

但实际上我没有得到nulls。

这是故意的还是一个错误?

Ros*_*des 5

它旨在以这种方式工作。该文件指出:

当查询涉及具有混合类型值的字段时,Cloud Firestore 使用基于内部表示的确定性排序。以下列表显示了顺序:

  1. 空值
  2. 布尔值
  3. 整数和浮点值,按数字顺序排序
  4. 日期值
  5. 文本字符串值
  6. [...]

请注意,当您使用混合类型的值运行查询时,它仅遵循此顺序。在您的查询中,您正在传递一个Date值,这意味着它只会查询类型的值, 而不是其他Date 类型的null例如)。

为了获取null值,您可以通过添加第二个来创建复合查询Where

Collection("products").Where("producedDate", "<", "2018-01-15").Where("producedDate", "==", null)
Run Code Online (Sandbox Code Playgroud)