如何在 Swift 中查询具有多个键值对的 firestore 数组

Cha*_*age 1 firebase swift google-cloud-firestore

我在 Cloud Firestore 中的一个集合有一个数组,其中数组中的每个项目都包含三个单独的值(请参阅该groupMembership字段: 在此输入图像描述

我知道我无法编写查询来查找与数组值之一匹配的文档。有没有办法编写查询来查找与所有三个项目的特定值匹配的文档?

例如,我想找到数组中包含一个对象的所有users位置groupMembership,该对象等于groupId: X, groupName: Y, membershipStatus: active

Fra*_*len 5

array-contains您可以在子句中传递整个对象。

所以像这样:

usersRef
  .whereField("groupMembership", arrayContains: [
    "groupId": "kmDT8OUOTCxSMIBf9yZC",
    "groupName": "Jon and Charles Group",
    "membershipStatus": "pending",
  ])
Run Code Online (Sandbox Code Playgroud)

数组项必须完全准确地匹配您传入的字典。如果您只想过滤每个数组元素中的某些属性,则必须仅使用这些属性创建其他字段。例如,一个groupIds仅包含(唯一)组 ID 的字段是很常见的,这样您也可以对这些 ID 进行过滤(当然在Firestore 查询的限制内)。