【问题标题】:(Firebase's Firestore || Flutter) How to get total of an identical field in all maps in a document(Firebase 的 Firestore || Flutter)如何获取文档中所有地图中相同字段的总数
【发布时间】:2019-06-12 07:20:44
【问题描述】:

我在maps 中的document 中有相同的字段。我想获得所有 map 字段的总数为 sum

这里是结构示例:

1: {
Name: "banana",
Price: 50,
Weight: 70
}

2: {
Name: "apple",
Price: 80,
Weight: 30
}
...

我将在一个document 中有多个maps

现在,如何获得sum 和所有fruits' priceweight 的总数?

总价:50 + 80 = 130

总数:70 + 30 = 100

是否可以在不提及map 的名称的情况下这样做?因为我将在ducument 中有多个maps。如果不是,有什么替代结构?

这是我现在的结构:

          Stores (collections)
                    |
         Products (sub collection)
          |                    |
Fruits (Document)      Vegetables (Document)
       |
Maps with tittle fruit id
     |_ Name
     |_ Price
     |_ Weight

注意:我的数据库是关于其他的,不完全是这个。所以不要试图理解这个查询。

【问题讨论】:

  • 你只希望在一个文档或跨文档的级别上做这个总和吗?
  • @RenaudTarnec 一份文件

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

您想总结一个 Firestore 文档中所有地图字段的总和。

有两种可能的方法:

1.阅读时总结

当您阅读(即查询)Firestore 文档时,您将获得该文档的所有字段。因此很容易阅读所需的字段并对其进行总结。

2。写的时候总结一下

当您编写创建文档时,您拥有地图的所有值。您可以很好地求和并将结果写入一个或多个特定字段。 如果您只更新一些地图值,更新时可能会更复杂一些。您可能需要在更新文档之前对其进行查询,以便获得所有值并能够计算更新后的总和。

【讨论】:

  • 我的用例适合在阅读时总结,即使我没有在查询中定义地图名称,是否可以读取和总结一个文档中具有相同字段的所有地图? (就像通配符一样)它听起来很奇怪,但我正在做的是我正在创建一个从 SQFLITE 到 FireStore 的同步方法,其中 sqlite 中的所有行都作为映射存储在 Firestore 文档中。所以 Map name 将是 sqlite 表的主键,我在 Firestore 中查询 sum 时不会有它。
  • 如果您没有明白我在说什么,请告诉我,我将在问题中更好地解释它作为更新。非常感谢您的帮助顺便说一句,这意味着很多。
  • 不确定是否了解您的 cmets。如果您将数据项保存在 Firestore 文档中。字段,您需要知道字段的名称。如果在此字段中存储了地图,则还需要知道地图元素的名称,因此循环遍历地图元素并对其进行汇总应该没有任何问题。
猜你喜欢
  • 2019-12-06
  • 2021-10-09
  • 2019-11-27
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
相关资源
最近更新 更多