在某些条件下解析查询检索

时间:2019-05-29 17:24:05

标签: android parse-platform parse-server parse-android-sdk

我正在一个班级中查询,我的问题是我有一些车牌,在哥伦比亚这里的车牌是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 :(得分:0)

您将无法使用文本搜索来执行此操作,因为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();
        }
    });
}

请记住,正则表达式对于数据库而言非常昂贵,因此对于您而言,创建适当的索引很重要。 TestDrive集合中的{Placa:1}索引应该对您有很大帮助。供您参考,请在这里看看: https://docs.parseplatform.org/android/guide/#regular-expressions