Swift Firestore:具有数组比较的查询

Swift Firestore:具有数组比较的查询,swift,firebase,google-cloud-firestore,Swift,Firebase,Google Cloud Firestore,我正在尝试实现类似于ref.whereField(“userID”,existsIn:friendArray)的功能,这将允许我从用户集合中筛选出朋友。我知道这样的查询不受支持。客户端解决方案,例如db.collection(“users”).getDocuments(){//iterate documents}可能对数据不太友好,是否有服务器端解决方案 虽然您没有显示文档结构,但我想您当前的文档结构如下: { "user_name": "Jon Doe", "friendArray":

我正在尝试实现类似于
ref.whereField(“userID”,existsIn:friendArray)
的功能,这将允许我从用户集合中筛选出朋友。我知道这样的查询不受支持。客户端解决方案,例如
db.collection(“users”).getDocuments(){//iterate documents}
可能对数据不太友好,是否有服务器端解决方案

虽然您没有显示文档结构,但我想您当前的文档结构如下:

{
  "user_name": "Jon Doe",
  "friendArray": [{
    0: "userID",
    1: "userID2",
    2: "userID3"
  }]
}
但建议将您的数据结构化为:

{
  "name": "Jon Doe",
  "friendArray": {
    "userID": true,
    "userID2": true,
    "userID3": true
  }
}
这样,您可以使用以下方法检索朋友列表中具有
userID
的所有用户:

db.collection("users")
    .whereField("friendArray.userID", isEqualTo: true)
    .getDocuments() { (querySnapshot, err) in

        // ...

}
结构(“架构师”)您的firestore数据首先以最佳性能和可伸缩性为目标,然后构建代码/查询。