我正在做一个功能,根据用户的区域和MBTI进行分类。
这是一个密码。
private void EventChangeListener() {
//firestore.collection("Users").orderBy("time",Query.Direction.DESCENDING).limit(50)
firestore.collection("Users").orderBy("time",Query.Direction.DESCENDING).limit(50)
.whereEqualTo("gender","여자")
.whereEqualTo("mbti","ENTP")
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
if(error != null){
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
Log.e("Firestore error",error.getMessage());
return;
}
for (DocumentChange dc : value.getDocumentChanges()){
if (dc.getType() == DocumentChange.Type.ADDED){
userArrayList.add(dc.getDocument().toObject(User.class));
}
myAdapter.notifyDataSetChanged();
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
}
}
});
}像这样,whereEqualTo().whereEqualTo().whereEqualTo()会造成很大的成本??
如果是对的,那还有别的办法吗?
发布于 2022-02-13 14:43:12
对于与查询匹配并被返回的文档数,将收取费用。查询子句的数量不影响成本。在理想情况下,使用更多的过滤器(如whereEqualTo().whereEqualTo().whereEqualTo() )可以减少匹配数量,降低成本。
例如,如果您收集了50家餐馆,并且在“城市”字段上使用了1 whereEqualTo,那么它只会返回该城市中的餐馆,并且只会花费N。如果你在“收视率”上加上另一个whereEqualTo,那么比赛的数量甚至可能少于N。
https://stackoverflow.com/questions/71101678
复制相似问题