你好,我一直在努力写所需的查询一段时间。我有一个集合,其中每个文档都具有两个属性: user1 和 user2 。现在,我要检索在 user1 和 user2 下具有特定字符串的所有文档。输入字符串取决于我的应用程序的实际用例。 这是一个例子: 输入字符串:“ Alex”,“ Adam” 我要检索有效文档的两个选项:
所以我需要这个确切的查询:给我所有 user1 等于“ Alex”并且 user2 等于“ Adam”或 user1的文档等于“亚当”, user2 等于“亚历克斯”。
我一直在尝试多个查询,例如:
.whereField("user1", in: ["Alex", "Adam"].whereField["user2", in: ["Adam", "Alex"]
我认为这行得通,因为这是说获取 user1 等于“ Alex”或“ Adam”且 user2 等于“ Adam”或“亚历克斯”。但是事实证明,您不能在单个查询中多次使用in过滤器。我该如何工作?
这是我的Firestore数据库的屏幕截图:
答案 0 :(得分:2)
我添加了这个吊舱是为了更方便的工作
pod 'FirebaseFirestoreSwift'
第一种方式
如果您想与这2个用户进行所有聊天 为此,您需要为此聊天中的所有用户添加新的跨领域
let searchTerm = channelReference.whereField("users", arrayContainsAny: [ID1, ID2])
具有2个不同查询的简单方法-用户1:“亚历克斯”,用户2:“亚当”
let searchTerm1 = reference
.whereField("user1", isEqualTo: "Alex")
.whereField("user2", isEqualTo: "Adam")
let searchTerm2 = reference
.whereField("user1", isEqualTo: "Adam")
.whereField("user2", isEqualTo: "Alex")
文档参考https://firebase.google.com/docs/firestore/query-data/queries#compound_queries