我想对地图类型进行范围查询,但失败。
但是,如果我使用等于特定值,它就可以工作。
如果user1为正数,我要选择游戏
这是我的模特
games
- id1
- results <---Map type
user1 : 0
user2 : 10
user3 : -20
user4 : 30
- id2
- results <---Map type
user1 : 20
user4 : -10
user7 : -20
user5 : 100
我的Swift代码:
let userId = "user1"
let db = Firestore.firestore()
var query = db.collection("games") as Query
query = query.whereField("results.\(userId)",isGreaterThanOrEqualTo: 0) <--- this return nothing
//query = query.whereField("results.\(userId)",isEqualTo: 20). <--- this will work and return 1
query.getDocuments { (snap, error) in
guard let documents = snap?.documents else {return}
print(documents.count)
}
想知道这是一个错误还是我遇到了限制
一些解决方案涉及将地图重构为集合。我尝试这个,它起作用。
但是很难查询我是否需要在游戏级别(例如..game period)组合其他属性文件,它会变得一团糟。希望任何人都能有一个好的解决方案。谢谢
gameResults
-id
game_id : id1
user : user1
result : 0
-id
game_id : id1
user : user2
result : 10