Как вы делаете групповой максимум в Cloud Firestore? - PullRequest
0 голосов
/ 18 июня 2019

Я учусь использовать Cloud Firestore с Flutter.

Допустим, у меня есть коллекция под названием Updates:

{
  uid: 1234,
  update: "At work",
  date: <timestamp>
}

Я хочу получить самое последнее обновление для каждого пользователя.Если бы у меня был список пользователей, я мог бы сделать:

db.collection("updates")
  .where("uid", "==", $uid)
  .orderby(date desc)
  .limit(1)
  .get();

для каждого.Но как мне получить список пользователей из моей коллекции обновлений?Нужно ли хранить отдельную коллекцию пользователей, которая, как я уверяю, уникальна, и синхронизировать ее с моей коллекцией обновлений?

Если я делаю это, есть ли хороший способ выполнить поиск за один шаг, или мне нужно получить всех пользователей, а затем выполнить итерацию по ним и получить их самый последний идентификатор документа и запроситьдокумент?

Я пришел из MySQL и думаю, что делаю это неправильно: |

1 Ответ

1 голос
/ 18 июня 2019

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

Cloud Firestore также не поддерживает запросы, которые охватывают несколько коллекций с разными именами, а также не являются объединениями между коллекциями.Если вам нужны данные из нескольких коллекций, вам придется выполнить несколько запросов к ним и объединить результаты в клиенте.

Это все довольно типично для баз данных типа NoSQL.

...