Firestore:如何在从多个文档中获取数据后将数据再次存储回正确的文档中

Firestore: How to store data back again in the right documents after fetching data from multiple documents

在我的应用程序中,用户可以跟踪他的锻炼情况,我想将其保存在 Cloud Firestore 中。我的想法是存储每个月的锻炼列表,以防止文档变得太大。所以文档看起来像这样:

month: '2022-02',
workouts: [
  {
  date: '2022-02-01',
  exercises: [
       {
        sets: [{'reps': 12, 'weight': 80}
               {'reps': 12, 'weight': 80}
            ],
       },
     ],
 },
{
  date: '2022-02-02',
  exercises: [
       {
        sets: [{'reps': 10, 'weight': 90}
               {'reps': 10, 'weight': 90}
            ],
       },
     ],
 },
],

问题:

例如,当我获取过去三个月的锻炼并将它们放入列表中以让用户与这些锻炼互动时。如何将它们再次存储在按正确月份排序的 Cloud Firestore 中?

为了能够将数据写回您从中读取的同一个文档,除了您从文档本身读取的字段之外,您还需要跟踪列表视图中每条数据的文档 ID。

有了文档 ID 后,向其中写入数据就像:

FirebaseFirestore.instance
  .collection("yourWorkoutsCollection")
  .document(documentIdForTheMonth)
  .update({ 'workouts': FieldValue.arrayUnion([theWorkoutToAdd]) });