如何在Cloud Firestore中实现SQL的SUM()函数

Jas*_*pal 5 sum google-cloud-firestore

我将用户的分数存储在Google Cloud Firestore中,因为每个分数在集合中名为“ points ” 的新文档中得分。

集合名称:点数

  • document1:{id:111,userid:345,value:50}
  • document2:{id:222,userid:345,value:70}
  • document3:{id:333,userid:345,value:30}
  • document1:{id:444,userid:345,value:100}

我想对字段中的所有值求和。

我有很多次Google,但一无所获。sum()是否有其他选择或实现用户记录分数的任何其他方法?

Fra*_*len 14

Cloud Firestore 中没有内置聚合运算符。

天真的解决方案是在客户端加载数据并在那里求和,但这意味着您(和您的用户)每次需要显示总和时都会产生加载所有文档的成本。

更好的方法是在您的数据库中保留一个所谓的运行总计,每当将文档写入(添加、修改、删除)到“点”集合时,您就会更新它。为此,您有两种选择:从客户端执行,或从受信任的环境(例如 Cloud Functions)执行。有关聚合查询Firestore 文档描述了这两个选项并显示了示例代码。