# #firebase #google-cloud-firestore #filter #nosql
Вопрос:
Я создаю приложение, в котором есть утилита фильтрации. В структуре моего FirestoreDB в настоящее время есть документ для каждой категории фильтров, и каждый из этих документов содержит список «вещей», для которых применяется этот фильтр. Поскольку к определенной «вещи» может применяться несколько фильтров, копии этой «вещи» могут отображаться в нескольких документах фильтра.
Базовая структура базы Данных:
фильтры (коллекция)
—filterA (doc)
— — — — вещь
1- — — — — — идентификатор
—-вещь 2
— — — — — идентификатор
—FilterB (doc)
— — — — вещь
2- — — — — идентификатор
— — — — вещь 3
— — — — — идентификатор
—filterC (doc)
— — — — вещь
1- — — — — идентификатор
— — — — вещь 3
— — — — — идентификатор
Существует ли тип запроса Firestore, который позволил бы мне указать, какие документы следует искать, и возвращать только список/массив «вещей», которые отображаются в каждом из указанных документов? Если это невозможно, как лучше всего структурировать базу данных вместо этого?
Комментарии:
1. Я думаю, вы ищете запрос на членство в массиве . Если это не так, можете ли вы показать скриншот такого документа?
2. @FrankvanPuffelen Спасибо за ваш ответ. Я добавил скриншот из эмулятора Firestore. Я не думаю, что запрос на членство в массиве-это именно то, что я искал. Мой запрос в основном таков: «верните список идентификаторов, которые отображаются как в filterA, так и в FilterB», что теоретически даст [«thing2»].
3. Это действительно совсем другое дело. Это должно быть связано с загрузкой обоих документов и сравнением полей в них. Там не так много Firestore может сделать, чтобы помочь. Вы уже пробовали прочитать оба документа и сравнить значения полей в коде приложения?