Я немного запутался в создании запроса в Android SDK Firestore. Я хочу ограничить количество документов только теми, которые были опубликованы на прошлой неделе, чтобы уменьшить количество документов, а также отфильтровать результаты, используя текст, введенный пользователем. Я хотел бы использовать предложение whereGreaterThan
с полем created
для даты и предложения startAt
и endAt
для фильтрации поля id
.
Однако есть проблема. SDK требует, чтобы первое предложение orderBy
использовало то же поле, что и предложение whereGreaterThan
. С другой стороны, startAt
и endAt
также кажутся привязанными к первому предложению orderBy.
Calendar oneWeekAgo= Calendar.getInstance();
oneWeekAgo.add(Calendar.DATE, -7);
Query query = firestore.collection(BuildConfig.FULL_PATH)
.whereGreaterThan("created",oneWeekAgo.getTime())
.orderBy("created", Query.Direction.ASCENDING)
.orderBy("id", Query.Direction.ASCENDING)
.startAt(filter)
.endAt(filter + "z");
Есть ли способ привязать .startAt и .endAt ко второму orderBy? Или иным образом достичь sh цели получения отфильтрованных документов из хранилища файлов, созданных после определенной даты?
Если я удалю предложения whereGreaterThan
и первый orderBy
, запрос получит отфильтрованные результаты из всех документов, а не только из тех, что были созданы за последнюю неделю.