如何使查询仅在Flutter(Dart)数组内的Map中发现某些值?

时间:2019-08-24 02:31:19

标签: firebase flutter dart google-cloud-firestore

我正在从事这个项目,例如,我必须将数据放入数组内部的地图中: [{Rate: 1.3, Title: "Test",...}] 我想做的事情是找到在其数组内部具有等级1.3及更高级别的地图而没有获取所有数组并在内部对其进行过滤的文档

我已经尝试过了

      Firestore.instance
          .collection("profiles")
          .where("questions", arrayContains: {"Rate": 1.3})
          .getDocuments(source: Source.serverAndCache)

此代码实际上要求我放置所有地图数据,以便它可以返回true,否则将返回false。我想要的只是根据一些地图数据过滤数据

1 个答案:

答案 0 :(得分:1)

arrayContains运算符检查数组中完整元素的存在。因此,如果您的数组包含元素{Rate: 1.3, Title: "Test"},则需要:

.where("questions", arrayContains: {Rate: 1.3, Title: "Test"})

如果仅想测试Rate,请创建一个附加数组Rates,仅保留这些值。然后您可以使用以下查询:

.where("rates", arrayContains: 1.3)