Java nodejs mongodb和android studio获取速度慢
我有一个系统,从我的服务器中提取数据,并通过android studio将其存储到移动SQL数据库中。它能起作用,但速度慢得像30分钟。我的数据库中有大约86000条记录,希望将它们全部从服务器中取出。最好的方法是什么 目前,我从服务器获取计数,然后查询服务器数据库,直到找到每个ID,然后将结果发送回我的移动应用程序Java nodejs mongodb和android studio获取速度慢,java,android,node.js,mongodb,Java,Android,Node.js,Mongodb,我有一个系统,从我的服务器中提取数据,并通过android studio将其存储到移动SQL数据库中。它能起作用,但速度慢得像30分钟。我的数据库中有大约86000条记录,希望将它们全部从服务器中取出。最好的方法是什么 目前,我从服务器获取计数,然后查询服务器数据库,直到找到每个ID,然后将结果发送回我的移动应用程序 app.post(“/get_data”),函数(req,res) { var Id\u request=req.body.Id\u request;//请求的Id var que
app.post(“/get_data”),函数(req,res)
{
var Id\u request=req.body.Id\u request;//请求的Id
var query={Val\u String:Id\u request};//查询值
//console.log(查询);
//find({},函数(err,result){//查找所有数据
findOne(查询,函数(err,result){//查找所有数据
如果(错误){
//资源状态(400)。发送(错误);
console.log(“发送错误”);
res.status(200.send();
}否则{
返回res.json(结果);
}
});
});
我在每个ID的pull请求中使用recersive函数
private void call_method()
{
HashMap<String, String> map = new HashMap<>();
map.put("Id_request", Integer.toString(data_pointer));//The ID value
Call<Fetch_result> call = retrofitInterface.executeGet_data(map);//Run the post
call.enqueue(new Callback<Fetch_result>() {
//call.enqueue(new Callback<Fetch_result>() {
@Override
public void onResponse(Call<Fetch_result> call, Response<Fetch_result> response) {
if (response.code() == 200)//Successful login
{
D1= response.body().getT1_String();
D2= response.body().getT2_String();
data_pointer = data_pointer + 1;
boolean result = BLE_DB.addData_Downloaded(D1,D2);//Add data
if(data_pointer<= Total_entries) {//Call method again
call_method();//Recursive here
}else if (data_pointer > Total_entries){
Utils.toast(getApplicationContext(),"All data received");
}
} else if (response.code() == 404) {
Utils.toast(getApplicationContext(), "Get data fail");
}
}
@Override
public void onFailure(Call<Fetch_result> call, Throwable t) {
Utils.toast(getApplicationContext(), "Get data error");
}
});
}
private void call_method()
{
HashMap=newHashMap();
map.put(“Id_请求”,Integer.toString(data_指针));//Id值
Call Call=interface.executeGet_data(map);//运行post
call.enqueue(新回调(){
//call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.code()==200)//成功登录
{
D1=response.body().getT1_String();
D2=response.body().getT2_String();
数据指针=数据指针+1;
布尔结果=BLE_DB.addData_下载(D1,D2);//添加数据
if(数据指针总数项目){
toast(getApplicationContext(),“接收的所有数据”);
}
}else if(response.code()==404){
toast(getApplicationContext(),“获取数据失败”);
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
toast(getApplicationContext(),“获取数据错误”);
}
});
}
我如何加快速度或以不同方式加快速度?
(省略查询参数将导致获取整个集合)您必须获取所有数据吗?没有办法按需获取数据吗?是的,很遗憾,我想获取该批数据。因为这是数据日志的必要部分。因此,有一个包含更多结果的查询,一次发送更多结果。从而限制查询调用?也有可能在集合中发送X个数量的文档吗?如果您do db.collection.find()如果没有任何查询,那么您将获得集合中的所有文档。那么是否可以在集合中发回X个文档?->我不明白您的意思如果我不添加查询,您是正确的,我将获得所有条目。但是我不知道如何一次接收所有条目。因此我想知道我是否可以像5号那样发送en 5因此X