在地图类型上进行范围查询的问题-Cloud Firestore和Swift

时间:2020-03-20 13:42:36

标签: swift google-cloud-firestore

我想对地图类型进行范围查询,但失败。
但是,如果我使用等于特定值,它就可以工作。

如果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

0 个答案:

没有答案