一尘不染

使用空字段查询比较

go

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

我期望如果我查询:

Collection("products").Where("producedDate", "<", "2018-01-15")

我将获取“ producedDate”早于“ 2018-10-15”的所有产品,包括那些“ producedDate”为空的产品。

但是实际上我没有得到nulls。

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


阅读 230

收藏
2020-07-02

共1个答案

一尘不染

它打算以这种方式工作。该文档指出:

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

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

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

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

Collection("products").Where("producedDate", "<", "2018-01-15").Where("producedDate", "==", null)
2020-07-02