Запросы Firebase могут проверять только те значения, которые находятся в известном местоположении под каждым дочерним узлом местоположения, которое вы запрашиваете. Таким образом, в вашей текущей структуре вы можете найти все места с указанным c именем или все время, когда указанный пользователь c посещал Токийскую башню в 2020 году. Но вы не можете найти всех пользователей во всех городах или выполнить поиск по всем посещения города (благодаря автоматическому идентификатору).
Другими словами: ваша текущая структура данных позволяет легко найти всех пользователей, которые отправились в город, по которому вы запрашиваете, но не позволяет вам легко запросить все города, в которые ходил пользователь. Чтобы разрешить этот вариант использования, вам необходимо добавить дополнительную структуру данных.
UserPlaces: {
UID1: {
placeID1: {
dateAdded: "2020-01-05",
interactionType: "placeTap"
}
placeID2: {
dateAdded: "2020-01-04",
interactionType: "somethingElse"
}
}
UID2: {
placeID1: {
dateAdded: "2020-01-05",
interactionType: "somethingElseAgain"
}
}
}
С помощью этой дополнительной структуры (часто называемой инвертированным индексом) вы можете затем искать (или запрашивать) данные для конкретный c пользователь. Возможно, вам придется изменить эту структуру данных для ваших конкретных c вариантов использования или даже добавить несколько таких структур для удовлетворения всех вариантов использования.
Также см. Мои ответы здесь: