Для одной из своих коллекций я создал следующий индекс:
createdOn
: отметка времени (по возрастанию) ordinal
: число (по возрастанию) parent
: ссылка (по возрастанию)
Однако, когда я запускаю запрос, который использует все три поля, firestore ничего не извлекает и вместо этого предлагает этот индекс ( последние два поля меняются местами ):
createdOn
: отметка времени (по возрастанию) parent
: ссылка (по возрастанию) ordinal
: число (По возрастанию)
Я также пытался изменить порядок where*
и orderBy
в запросе, но это не помогло. Итак, теперь у меня есть два индекса, и я не понимаю, почему один из них не работает, а другой в порядке.
Зачем мне нужен другой индекс? документы не упоминают об этом (по крайней мере, здесь).
Я использую следующий запрос:
private val firestore = FirebaseFirestore.getInstance()
fun texts(languageId: String, storyId: String): Task<QuerySnapshot> {
return firestore
.collection("/languages/$languageId/texts")
.whereIn("createdOn", dates) // <-- List<Timestamp>
.whereEqualTo("parent", firestore.document("/languages/$languageId/stories/$storyId"))
.orderBy("ordinal", Query.Direction.ASCENDING)
.get()
}