【问题标题】:Query comparisons with null field查询与空字段的比较
【发布时间】:2018-06-24 12:08:37
【问题描述】:

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

我期待如果我查询:

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

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

但实际上我没有收到nulls。

这是故意的还是错误的?

【问题讨论】:

  • 这似乎是 Firestore 维护者的问题,或者可能是 Firestore 特定的支持论坛。

标签: firebase go google-cloud-firestore


【解决方案1】:

它本来是这样工作的。 documentation 声明:

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

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

请注意,仅当您运行具有混合类型值的查询时,它才会遵循此顺序。在您的查询中,您传递了一个 Date 值,这意味着它只会查询 values of Date type 而不是其他的(例如 null for示例)。

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

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

【讨论】:

猜你喜欢
  • 2014-03-02
  • 2011-05-06
  • 2015-08-17
  • 1970-01-01
  • 2015-12-21
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多