Разбор запроса при получении с определенными условиями - PullRequest
0 голосов
/ 29 мая 2019

Я делаю запрос в классе, моя проблема в том, что у меня есть несколько номерных знаков, здесь, в Колумбии, номера лицензий соответствуют следующим требованиям ABC 123. Мне нужно, чтобы мой запрос возвращал только мне, в данном случае те, которые конец 2

Это то, что я сделал, следуя документации ...

private void queryForPlaca(String terminaEn){

    ParseQuery<ParseObject> query = ParseQuery.getQuery("TestDrive");
    query.whereFullText("Placa", terminaEn);
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            for (ParseObject obj:objects
                 ) {
                listaDeVehiculos.add(obj);
            }
            ListaVehiculosPicoYPlacaAdapter adapter= new ListaVehiculosPicoYPlacaAdapter(getActivity(),listaDeVehiculos);
            listadoTestDrive.setAdapter(adapter);
            adapter.notifyDataSetChanged();
        }
    });
}

переменная terminaEn запрашивает лицензии для размещения табличек в зависимости от дня, выбранного в календаре (в данном случае 2). Моя проблема в том, что не только мой listaDeVehiculos не возвращает никаких значений, но я также вижу, что он также возвращает значения, которые мне не нужны, например, ABS 124, AXX 524, AEE 234 и т. Д. Как мне изменить свой запрос? .

1 Ответ

0 голосов
/ 29 мая 2019

Вы не сможете сделать это с помощью текстового поиска, поскольку функция текстового поиска MongoDB соответствует только полным терминам. Вы должны будете сделать это, используя регулярные выражения. Попробуйте следующее:

private void queryForPlaca(String terminaEn){

    ParseQuery<ParseObject> query = ParseQuery.getQuery("TestDrive");
    query.whereMatches("Placa", terminaEn + "$");
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            for (ParseObject obj:objects) {
                listaDeVehiculos.add(obj);
            }
            ListaVehiculosPicoYPlacaAdapter adapter= new ListaVehiculosPicoYPlacaAdapter(getActivity(),listaDeVehiculos);
            listadoTestDrive.setAdapter(adapter);
            adapter.notifyDataSetChanged();
        }
    });
}

Помните, что регулярные выражения очень дороги для базы данных, поэтому важно создать соответствующий индекс. Индекс {Placa: 1} в коллекции TestDrive должен вам очень помочь. Для справки, пожалуйста, посмотрите здесь: https://docs.parseplatform.org/android/guide/#regular-expressions

...