首页 > 解决方案 > 通过比较两个文档的字段值来定义 Firestore 查询

问题描述

我正在使用 Cloud Firestore 迈出第一步,但我被困在了这一步。我正在寻找一个 where 查询来返回我>=的极限值。

  [{
    'limit': 100,
    'value': 200 
  }, 
  {
    'limit': 50,
    'value: 50,
  },
  {
    'limit': 95,
    'value': 90, 
  }]

我在 Cloud Function 中使用 Firebase Admin Python SDK。

有什么提示吗?

标签: pythonfirebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


正如 Alex 所解释的,在使用 Firestore 执行查询时,无法比较两个文档的字段值。

一种可能的方法是在将文档保存到数据库时保存不等式的结果。如果,当您保存“检查”文档时,您知道两个值 (limitvalue),您可以添加第三个字段,例如,valueAboveLimit其值为Trueor False,您在保存“检查”文档时计算(即来自使用相应客户端 SDK 的前端或使用 Firebase Admin Python SDK 的服务器,具体取决于您编写 Firestore 文档的方式)。

那么您的查询将很容易:

database = firestore.client()
col_checks = database.collection('checks')
query_checks = col_checks.where('valueAboveLimit', '==', True)
results = query_checks.get()

如果您在保存 Firestore文档没有limit和存在,计算并保存该字段。valuelimitvalueAboveLimit


推荐阅读