Firestore: массив запросов с оператором больше чем - PullRequest
0 голосов
/ 06 марта 2019

У меня есть следующая структура данных в Firestore

- runners (Collection)
-- uid_1 (Document)
--- name: James
--- height: 170
--- weight: 54
--- runTimeInSeconds: [ 540, 533, 530, 500 ] // this is array of 4
-- uid_2 (Document)
--- name: Larry
--- height: 168
--- weight: 51
--- runTimeInSeconds: [ 521, 611, 501 ] // this is array of 3 runs
-- uid_3 (Document)
--- name: Ben
--- height: 180
--- weight: 76
--- runTimeInSeconds: [ 621, 533 ] // this is array of 2 runs

Я хочу получить следующие документы (где runTimeInSeconds больше 600) в следующем порядке: uid_2, за которым следует uid 3. Но яне хочу видеть uid_1.

Какой запрос в пожарном хранилище я должен написать?

Я пытался:

runnersRef.where("runTimeInSeconds", ">", 600) // this does not work.

1 Ответ

1 голос
/ 13 марта 2019

Вы не можете выполнять запросы диапазона значений в списках. Индекс, созданный для элементов списка, не работает таким образом. Он может только обнаружить, что значения в списках существуют, при использовании оператора array_contains. Если вы хотите использовать оператор диапазона, вам нужно будет разделить каждый элемент списка полей на новую коллекцию с отдельными документами для каждого элемента. Каждый документ должен иметь поле с полем продолжительности в виде числа. Затем вы можете дублировать другие поля в каждом документе или просто сохранить ссылку на исходный документ для бегуна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...