基于2个字段的比较的Firestore查询文档

时间:2019-03-23 15:18:05

标签: firebase google-cloud-firestore

说我有这份文件

userProfile: {
  createdAt: '2018-01-01',
  updatedAt: '2018-01-04'
}

我想检索所有创建后更新的userProfiles,这意味着满足createdAt < updatedAt的那些。
您可以在Firestore中这样做吗?

类似这样的东西,但是第二个操作数是一个字段,而不是一个值:

userProfileRef.where("createdAt", "<", "updatedAt")

谢谢

1 个答案:

答案 0 :(得分:1)

您将无法通过“标准” Firestore查询执行此操作。

最简单的方法是:

  1. 如果文档创建后从未更新过,则在updatedAt字段中有一个默认的“虚拟”日期(例如1900-01-01)。然后,您将使用userProfileRef.where("updatedAt", ">", "1900-01-01")
  2. 进行查询

  1. 在文档中有一个特定的标记,您可以在更改updatedAt字段的值时(即在创建后更新文档时)进行更新。

请注意,您无法查询不包含给定字段的文档(有关更多详细信息,请观看此官方video),因此,您不能依靠缺少updatedAt字段的情况。