#json #performance #google-cloud-firestore #maps #structure
#json #Производительность #google-облако-firestore #Карты #структура
Вопрос:
Я занимаюсь социальными сетями, и в моих сообщениях у меня есть «теги» (которые практически бесконечны, поскольку их более 200), я хочу, чтобы мои пользователи фильтровали как теги, так и дату, например:
myRef.where(«tag» == «tagName»).OrderBy(‘date’, ‘asc’)
НО … у меня есть бесконечное количество тегов, которые повергают меня в шок, и я не мог справиться.
Должен ли я создавать пользовательскую карту с разделами размером 1 м??? Должен ли я создать пользовательский идентификатор с данными на нем??? Как я смогу смешивать данные asc с этими запросами или смешивать два или более типов вместе?
Ответ №1:
Для вашего запроса требуется индекс на tag date
, а не на tagName date
.
Но если вы хотите сохранить список тегов для каждого документа, вы захотите сохранить их в массиве, а затем использовать array-contains
для проверки, есть ли у документа определенный тег. Чтобы узнать, tagName
существует ли в массиве строковых значений tag
, вы должны запросить:
myRef.where("tag", "array-contains", "tagName").orderBy('date', 'asc')
Подробнее об этом смотрите в Улучшенных массивах в облачном Firestore!