通过比较两个文档的字段值来定义 Firestore 查询

Kub*_*ber 5 python firebase google-cloud-functions google-cloud-firestore

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

  [{
    'limit': 100,
    'value': 200 
  }, 
  {
    'limit': 50,
    'value: 50,
  },
  {
    'limit': 95,
    'value': 90, 
  }]
Run Code Online (Sandbox Code Playgroud)

我在云函数中使用 Firebase Admin Python SDK。

有什么提示吗?

Ren*_*nec 5

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

一种可能的方法是将文档保存到数据库时保存不等式的结果。如果在保存“检查”文档时您知道两个值(limitvalue),则可以添加第三个字段,例如,valueAboveLimit其值为TrueFalse,该字段是您在保存“检查”文档时计算的(即来自使用相应的客户端 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()
Run Code Online (Sandbox Code Playgroud)

如果您在保存 Firestore 文档时没有limit和的值value(例如稍后写入该字段),您可以使用在 Firestore 文档更改时limit触发的云函数,并且如果这两个字段存在,计算并保存该字段。valueAboveLimit