根据字段的值获取文档,使得该字段存在于某些文档上而其他文档上不存在

问题描述 投票:0回答:1

我正在开发云 Firestore,我们假设这就是我的文档在集合中的结构:

{
    'name': 'something'
    'age': 23,
}

我有大约 200-300 个用户,我像这样存储他们的数据。现在假设我必须添加一个新字段

favorite_color
。因此,我将其添加到现在正在创建的所有新用户帐户中。所以现在一些文档如下所示:

{
        'name': 'something'
        'age': 23,
        'favorite_color': 'red',
}

现在我想通过以下查询获取这些文档:

Get all docs where favorite_color is empty string or if the field just doesn't exist
。我不知道如何完成这件事。这还可以吗?任何帮助将不胜感激。

flutter firebase google-cloud-firestore
1个回答
0
投票

我不确定这如何与查询一起使用,但您可以尝试以下代码:

Future<List<Map<String, dynamic>>> getData() async {
            try {
              final list =
                  await FirebaseFirestore.instance.collection("users").get();

              /// Result List
              final List<Map<String, dynamic>> res = [];

              for (final element in list.docs) {
                final data = element.data();

                if (data.containsKey("fieldName")) {
                  if ((data['fieldName'] as String).isEmpty) {
                    /// if Field is Empty
                    /// add to result list
                    res.add(data);
                  } else {
                    /// Handle Data with non empty fieldName
                  }
                } else {
                  /// if Field is not present
                  /// add to result list
                  res.add(data);
                }
              }

              return res;
            } catch (e) {
              print(e.toString());
              rethrow;
            }
          }
© www.soinside.com 2019 - 2024. All rights reserved.