Запрос Firestore whereGreater в одном поле и OrderBy в другом поле - PullRequest
1 голос
/ 01 августа 2020
• 1000 1002 *

Firestore дает исключение, что мне нужно сначала добавить .orderBy ("location"), если я сделаю это и добавлю составной индекс для этого запроса, он будет работать, просто упорядочивая документы по местоположению и упорядочивая по населению, но я не хочу заказ по местоположению. Я хочу заказать только по "населению". Есть ли способ обойти это?

1 Ответ

0 голосов
/ 03 августа 2020

Это ограничение в Firestore. Вы не можете фильтровать по полю, а после этого - по другому полю. они должны быть в одном поле. В качестве рабочего решения можно добавить еще одно условие orderby, поскольку это ограничение действует только для первого orderby. сделать это так:

_firestore.collectionGroup(_collectionGroupName)
          .where("location",isGreaterThanOrEqualTo: lowGeoPoint)
          .where("location",isLessThanOrEqualTo: highGeoPoint)
          .orderBy("location", descending: true)
          .orderBy("population", descending: true)
          .limit(10)
          .get();

Пожалуйста, имейте в виду, что вам нужно создать составной индекс для этого запроса.

...