Запросить диапазон дат И временной диапазон в базе данных - PullRequest
0 голосов
/ 07 декабря 2018

Я хотел бы запросить в моем наборе данных результаты, полученные в диапазоне дат и диапазоне (диапазон геохэш).Я изо всех сил пытаюсь найти хорошее решение.

Я использую GeoFire и пробовал различные методы сортировки моих данных по дате или местоположению.Достаточно просто построить узел для каждого дня и вывести геошаши внутрь, но как я могу затем просмотреть эти данные, не загружая, например, все 5000 результатов в городе Нью-Йорке?

Если бы я мог отсортировать сначала по геохэшуи затем в день, когда это будет легко достигнуто, но я не могу сделать это в Firebase или любой базе данных NoSQL.

Кто-то, возможно, столкнулся с этой проблемой многолучевого запроса, и я надеюсь, что вы можете поделиться тем, что вы узнали.

Спасибо

1 Ответ

0 голосов
/ 07 декабря 2018

Достаточно просто построить узел для каждого дня и вывести геошаши внутрь, но как я могу затем просмотреть эти данные, не загружая все 5000 результатов, например, в городе Нью-Йорке?

Пожалуйста, дайте мне знать, если я неверно истолковал ваш вопрос.Сможете ли вы создать DatabaseReference для узла, представляющего определенный день, создающего объект GeoFire и GeoQuery, повторяющихся для каждого дня?

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("path/to/dayNode");
GeoFire geoFire = new GeoFire(ref);
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(37.7832, -122.4056), 0.6); // Use this for addGeoQueryEventListener() or something else
// See https://github.com/firebase/geofire-java

Это позволит вам загружать местоположения только на 0,6 км.окружающий 37,7832, -122,4056.Чтобы предотвратить одновременную загрузку слишком большого количества результатов, начните с малого радиуса и увеличивайте оттуда?

В качестве примечания, я считаю, что Firebase Firestore допускает несколько состояний курсора, таких как:

db.collection("locations")
    .orderBy("locationhash")
    .orderBy("date")
    .startAt(locationHash, startDate)
    .limit(25);

К сожалению, я не думаю, что вы сможете указать радиус при сортировке по дате и разбивке на страницы, если вы не продлили работу, выполненную в GeoFire или GeoFirestore.Надеюсь, у кого-то есть идея получше.

...