我正在一个班级中查询,我的问题是我有一些车牌,在哥伦比亚这里的车牌是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等。我应该如何修改查询?
答案 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