我有一个具有多个属性的文档的集合(组),其中一个(成员)是具有以下结构的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属性的内部。
答案 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 数组中的地图值