Я собираюсь создать простое приложение для чата, используя Flutter + Firestore, храня пользователей и чаты в отдельных коллекциях. Каждый документ чата имеет два строковых поля [uid1, uid2], представляющих идентификаторы пользователей соответствующих участников. Мне нужно иметь возможность искать все чаты для данного пользователя (uid), так что некоторый тип запроса ИЛИ, это было бы возможно, сохраняя их в поле массива и используя array_contains.
Однако, чтобы обновить документ чата, мне нужно иметь возможность напрямую запрашивать оба поля для получения конкретного чата c между двумя пользователями, что было бы невозможно при использовании подхода массива (вложенные массивы не положено). Даже хранение обоих в виде двух строковых полей верхнего уровня требует двух запросов к хранилищу в обоих направлениях.
Примите во внимание любые советы о том, как решить это ограничение запросов Firestore?