0

我在课堂上进行查询我的问题是我有一些车牌,在哥伦比亚这里的车牌遵循 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 等。我应该如何修改我的查询? .

4

1 回答 1

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

于 2019-05-29T17:35:36.090 回答