Как можно структурировать данные в Firestore для поиска пересечения элементов? Например:
- Комплект 1 содержит: a, b, c
- Комплект 2 содержит: d, e, f
- Комплект 3 содержит: d, e, h
- Комплект 4 содержит: r, f, x
Используя приложение, человек выбирает, что у него есть набор 1 и 2, он должен вернуть набор 3. Если он выберет набор 1 и 3, было бы полезно показать, что покупка набора 4 будет означать, что у него есть набор 2.
Этот пример крошечный по сравнению с общим набором данных. Есть много тысяч комплектов и миллионов деталей.
Я думаю, что способ структурировать эти данные состоит в том, чтобы между ними было много совпадений. Там должно быть 2 коллекции верхнего уровня, один для комплектов и один для деталей. Коллекция комплектов будет содержать документы для каждого комплекта, которые включают в себя карту деталей, где у каждой детали есть идентификатор и количество. Коллекция частей будет содержать документы для частей. Каждая часть будет иметь идентификатор, который соответствует идентификатору в картах документов комплекта и содержит массив идентификаторов комплекта.
Приложение прочитает наборы, которые возвращают потенциально тысячи деталей, затем прочитает каждую из этих частей и получит все номера комплектов, затем прочитает все эти комплекты и увидит, для каких из них имеются все детали. , Это, вероятно, сработает, но по мере роста базы данных будут считываться тысячи документов за поиск. Есть ли лучший способ хранить данные, чтобы уменьшить количество документов, но при этом масштабировать?