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

标签 python firebase google-cloud-firestore google-cloud-functions

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

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

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

有什么提示吗?

最佳答案

正如 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()

如果您在保存 Firestore 文档时没有 limitvalue 的值(例如 limit字段稍后写入),您可以使用触发的 Cloud Function when the Firestore document is changed并且,如果存在这两个字段,则计算并保存此 valueAboveLimit 字段。

关于python - 通过比较两个文档的字段值来定义 Firestore 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58268838/

相关文章:

python - UnicodeDecodeError : 'ascii' codec can't decode byte 0xd1 in position 2: ordinal not in range(128)

javascript - 如何在nodejs中访问可变文档ID

database - 如何在 flutter 朔迷离的Firestore卡片列表中显示我的结果

firebase - 设计具有多对多和跨实体关系的 Cloud Firestore 架构

Python 脚本 - 记录失败的 icmp/ping 响应 - 问题

python - 带尖音符的拉丁字母 : DjangoUnicodeDecodeError

android - firebase 控制台中的项目已消失,但应用程序运行良好

firebase - firestore 数据库类型验证

android - 如何使用安全规则防止用户删除Firebase数据库中某个路径下的所有数据?

python - 基于字典的关键词分类