У меня есть база данных Firebase Realtime, с этим примером структуры

Мне нужно создать фильтры, чтобы я мог захватить все узлы, которые стоят от 100 до 400 долларов, не дальше 60 миль от моего текущего местоположения, и чья startDate не сегодня. Или любой вид комбинации этих фильтров (стоимость от, стоимость до, расстояние, дата начала, дата начала до).
Есть ли эффективный способ хранения этих данных, чтобы вся фильтрация могла происходить на стороне сервера?
Я знаю, что могу сделать .orderByChild( "cost" ).startAt(100).endAt(400)
, а затем перебрать datasnapshot
на стороне клиента, но я не думаю, что это элегантно или эффективно, когда база данных растет.
Представьте, что вы собрали миллионы узлов, чтобы показать 3 или 4, которые удовлетворяют всем фильтрам.
Я много занимался исследованиями (поверьте мне), но мне так трудно все же попробовать его вкус. Я был воспитан в оболочке SQL, и эти запросы раньше были моей азбукой, я просто не могу смириться с мыслью, что все становится настолько раздражающе уродливым, но это должен быть я.
Кто-нибудь с большим опытом работы с этими базами данных NO-SQL может мне помочь? Это должна быть база данных реального времени Firebase, а не облачное хранилище пожаров.