Как переименовать родительские теги в документах Firestore json? - PullRequest
0 голосов
/ 16 июня 2020

У меня есть требование понимать различные теги, входящие в мои документы Firestore json. Теги называются так: d1, d2, d3 et c. и иметь некоторые значения, такие как «Автомат c», «Бренд», «Руководство» и c. Я хочу иметь возможность переименовать эти ключи (d1, d2, d3) в более подходящие, например «Фирменное наименование», «Категория» и т. Д. c. в зависимости от значений, которые эти ключи хранятся во всех моих документах в моей коллекции. Как я могу определить, что указывает каждый ключ (родительский тег) в документах Firestore? Можно ли этого добиться путем создания индекса?

1 Ответ

3 голосов
/ 16 июня 2020

Итак, я понимаю, что вам нужно подсчитать, какие значения являются наиболее частыми для данного поля в коллекции документов. Вы не можете просто сделать это с помощью запроса, как в SQL, в Firestore нет функций подсчета.

Я вижу два варианта:

  1. Вы извлекаете все документы и вы их считаете. Очевидно, что если вы сделаете это несколько раз, это будет очень дорого при чтении
  2. Вы увеличиваете счетчик при создании документа, а затем сортируете по этому счетчику. То, как вы структурируете счетчики, зависит от ваших требований:

    a) Все они могут быть в одном документе

    b) или у вас может быть коллекция счетчиков и 1 документ на поле (d1, d2, d3)

    c) или у вас может быть одна коллекция для каждого поля, а затем один счетчик на значение (наиболее масштабируемый).

    d) ...

РЕДАКТИРОВАТЬ: подробнее о варианте 2

  • Создание счетчика: каждый раз, когда создается документ, вы увеличиваете счетчики. Например: для варианта 2.b и нового документа = {d1: "Automati c, d2:" Brand} вы можете увеличить счетчики следующим образом:

    colref.doc("d1").set({Automatic: firebase.firestore.FieldValue.increment(1), { merge: true }
    colref.doc("d2").set({Brand: firebase.firestore.FieldValue.increment(1), { merge: true }
    

И в общем:

    colref.doc(field).set({[fieldvalue]: firebase.firestore.FieldValue.increment(1), { merge: true }
  • Запрос: для 2.a и 2.b вам нужно будет вытащить документы и отсортировать их самостоятельно, для 2. c вы можете использовать консоль для каждого поле
...