Хотя запросы Firestore array-contains
могут приблизить вас к этому, вы не можете использовать их в своей текущей модели данных, поскольку вы вкладываете массивы.
Чтобы разрешить сценарий использования, вам, по крайней мере, потребуется развернуть один из этих массивов во вложенную коллекцию каждой статьи, поэтому:
Articles (collection)
$article
reports (collection)
$report (document with a locations array)
В этот момент вы можете использовать запрос группы коллекций для поиска во всех reports
коллекциях, а затем array-contains
для поиска соответствующих документов отчета:
var ref = firebase.firestore().collectionGroup("reports");
ref.where("locations", "array-contains", { location: "Sydney", country: "Australia" })
Не берите в голову приведенный ниже ответ, который предполагает, что у вас был только один уровень массив ...
Этот тип запроса должен быть возможен, насколько я вижу, с использованием оператора array-contains
. Имея в виду, что вам нужно указать весь элемент массива.
Так что-то вроде:
collectionRef.where("reports.locations", "array-contains",
{ location: "Sydney", country: "Australia" })