Java 其中大于或等于firestore中的读取数,且Where Array包含读取数
这是一个相当普遍的问题,但我找不到任何文件来解释这一点 我使用Java 其中大于或等于firestore中的读取数,且Where Array包含读取数,java,android,google-cloud-firestore,Java,Android,Google Cloud Firestore,这是一个相当普遍的问题,但我找不到任何文件来解释这一点 我使用firestore作为我应用程序的主数据库 我最近实现了一个自动完成系统,通过以下两种方式查询我的firestore(第一种方式捕获部分单词,第二种方式捕获整个单词(如果单词不在句首): db.collection(“id”) 。其中大于或等于(ID,s.toString())。其中小于或等于(ID,s.toString()+“\uF7FF”)。限制(10)。获取() .addOnCompleteListener(新的OnComple
firestore
作为我应用程序的主数据库
我最近实现了一个自动完成系统,通过以下两种方式查询我的firestore
(第一种方式捕获部分单词,第二种方式捕获整个单词(如果单词不在句首):
db.collection(“id”)
。其中大于或等于(ID,s.toString())。其中小于或等于(ID,s.toString()+“\uF7FF”)。限制(10)。获取()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
String id=document.getString(“id”);
添加(id);
}
}
}
} );
数据库收集(“ID”)
.whererraycontains(“IDArray”,s.toString()).limit(10.get())
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
List idsParts=(List)document.get(“IDArray”);
字符串id=TextUtils.join(“,idsParts);
添加(id);
}
}
}
} );
这段代码工作得很好,但是我正在努力理解它的工作方式
假设我的ID集合中有100万个文档。当我使用上面的查询时,它会搜索所有100万个文档并检查每个文档吗?或者更具体地说,这是否意味着它将计为100万次读取,或者最终因为我使用了.limit(10)
它意味着只使用了10次读取
我这样问是因为这个应用程序很快就会发布,我想知道上面的方法查询起来是否非常昂贵
如果有其他方法来优化查询,我很乐意知道
谢谢概念很简单:
结果的文档数=已收费的读取操作数
当您使用limit时,您会告诉查询提供指定数量的结果
例如,如果您对100个文档执行查询,而您的查询只满足15个文档,那么您只需支付15个文档的费用。进一步说,如果您使用限制(10),结果将只有10个文档(10次读取)。那么在我的情况下,如果我查询100万个文档,只有5次,结果将计为5次读取?是否有更深入了解的来源?是的,您只需支付5份文件的费用。以下是有关它的一些详细信息:。也许这里也有:
db.collection( "IDS" )
.whereGreaterThanOrEqualTo("ID", s.toString() ).whereLessThanOrEqualTo( "ID", s.toString() + "\uF7FF" ).limit(10).get()
.addOnCompleteListener( new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
String id = document.getString( "ID" );
ids.add( id );
}
}
}
} );
db.collection( "IDS" )
.whereArrayContains("IDArray", s.toString() ).limit(10).get()
.addOnCompleteListener( new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
List<String> idsParts = (List<String>) document.get( "IDArray" );
String id = TextUtils.join( " ", idsParts );
ids.add( id);
}
}
}
} );