查询文档中的Firestore Map属性

时间:2018-12-24 04:58:04

标签: swift firebase google-cloud-firestore

我有一个具有多个属性的文档的集合(组),其中一个(成员)是具有以下结构的Google地图数组:

members:[{"is_admin":true,"user":"users/someuserid"}]

当“成员”是对用户文档的引用数组时,很容易找到用户所属的所有组:

   db.collection("groups").whereField("members", arrayContains: db.document("users/"+UserDefaults.standard.string(forKey: "firebase_uid")!) ).getDocuments(){

我正在尝试实现相同的目的(获取用户所属的所有组文档),但是找不到正确的方法来查询map属性的内部。

2 个答案:

答案 0 :(得分:0)

您目前无法使用Firestore进行此类查询。您只能匹配数组中某个对象的全部内容,而不能匹配数组中某个对象的特定字段。如果要匹配包含完全{"is_admin":true,"user":"users/someuserid"}的数组字段,则应该能够做到。您将必须提供 all 要搜索的对象字段的确切字段。

如果您只想查找具有特定字符串值的文档,请考虑将该值分成自己的字段,以便可以进行索引和搜索。

答案 1 :(得分:0)

Firebase 中的某个时间似乎有更新

现在你可以说:-

我来自 dart,所以下面的语法会有所不同

import json # import json at the top

# inside your def use this code
jsonObj = json.dumps(my_dictionary, indent=1, sort_keys=True, default=str)
return json.loads(jsonObj), 200

我想无论语法如何,您都会明白我的意思

您将看到此 CollectionReference _collectionReference= FirebaseFirestore.instance.collection('groups'); String _searchingForThisUserID = users/someuserid; // which is the value u were looking for QuerySnapshot _collectionSnapshot = await _collectionReference .where('anotherFieldNameIfYouWant', isEqualTo: 'otherValueIfYouWant') .where('members.user', isEqualTo: '_searchingForThisUserID ') .get(); 如何通过此地图的字段名称访问 firebase 数组中的地图值