Запросы к хранилищу огня на основе массива содержат и упорядочены - PullRequest
0 голосов
/ 26 мая 2020

Я храню некоторые данные в firestore, и это выглядит следующим образом:

enter image description here

У меня есть коллекция под названием Items внутри у меня есть много документов, каждый из которых имеет собственный идентификатор, а внутри каждого документа есть несколько полей.

Одно из полей - это UserID, который показывает, какой пользователь держит элемент.

Теперь у меня было хотел бы запросить firestore таким образом, чтобы он вернул мне все элементы, популярность которых превышает 3,5, и когда мой собственный идентификатор не является одним из идентификаторов, указанных в массиве UserID.

Есть ли какие-либо возможность сделать это?

В настоящее время я использую следующее:

db.collection( "Items" ).orderBy( "Popularity", Query.Direction.DESCENDING ).whereGreaterThan( "Popularity", "3.5" ).limit( 50).get()

Но он также возвращает результаты, в которых мой идентификатор появляется в массиве.

1 Ответ

0 голосов
/ 26 мая 2020

Firestore не предлагает никаких запросов, которые проверяют отсутствие данных в документе. Индексы Firestore работают только в зависимости от наличия данных - вы не можете эффективно индексировать несуществующие вещи. Таким образом, часть ваших требований, которая гласит, что «когда мой собственный идентификатор не является одним из идентификаторов, показанных в массиве UserID», невозможна. Вместо этого вы можете написать код в клиентском приложении для фильтрации документов, в которых отсутствует UID текущего пользователя.

...