Как мне оптимизировать запрос Firebase, который ищет карты? - PullRequest
0 голосов
/ 12 апреля 2019

Вот моя ситуация: я продаю торговые карты онлайн.Я храню их в пронумерованных «разделах» в коробках для карточек, где каждая секция содержит примерно 60-75 карточек.Имея около 150 разделов, нет простого способа найти карточки, которые люди заказывают без какого-либо программного обеспечения.Я создал скрипт Python, который берет список купленных карт, получает доступ к моей базе данных Firebase (Cloud Firestore) и возвращает разные номера разделов каждой карты.

Вот что я пытаюсь сделать: Я хочу оптимизировать запрос Firebase, чтобы минимизировать количество секций, которые мне нужно найти.У меня много дубликатов карточек, поэтому я считаю, что оптимизация такого запроса сэкономит мне значительное количество времени при поиске карточек.Я действительно понятия не имею, с чего начать.Кто-нибудь может помочь?

Пока что я создал базовый запрос, который получает каждую карточку отдельно и возвращает раздел.

Вот мой текущий запрос:

db = firestore.Client()
collection = db.collection(CARD_COLLECTION_NAME)
docs = collection.where("name", EQUALS, card_name).where(IS_SOLD_PROPERTY, EQUALS, False).get()
for doc in docs:
    db.collection(CARD_COLLECTION_NAME).document(doc.id).set({
        IS_SOLD_PROPERTY: True
    }, merge=True)

return doc._data["inventory_section"]

1 Ответ

0 голосов
/ 12 апреля 2019

Сам по себе твой подход выглядит хорошо для меня.Единственная оптимизация, о которой я могу подумать, - это ограничиться извлечением одной карты:

docs = collection
        .where("name", EQUALS, card_name)
        .where(IS_SOLD_PROPERTY, EQUALS, False).get()
        .limit(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...