Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java com.mongodb.MongoTimeoutException从mongodb中删除_Java_Android_Mongodb - Fatal编程技术网

Java com.mongodb.MongoTimeoutException从mongodb中删除

Java com.mongodb.MongoTimeoutException从mongodb中删除,java,android,mongodb,Java,Android,Mongodb,我已经在创建了一个MongoDB数据库,现在我正试图通过Android应用程序从该数据库中删除一个文档,但是我得到了一个异常com.MongoDB.MongoTimeoutException。所以请帮忙 代码 package com.example.abc.mongodatabase; import android.content.Context; import android.os.AsyncTask; import android.support.v7.app.AppCompatActiv

我已经在创建了一个MongoDB数据库,现在我正试图通过Android应用程序从该数据库中删除一个文档,但是我得到了一个异常
com.MongoDB.MongoTimeoutException
。所以请帮忙

代码

package com.example.abc.mongodatabase;

import android.content.Context;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.MongoClient;
import java.net.URL;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new MongoDeletion().execute(MainActivity.this);
    }
}



class MongoDeletion extends AsyncTask<Context, Void, Object> {

    @Override
    protected Object doInBackground(Context... params) {
        try {
            URL requestUrl = new URL("https://api.mongolab.com/api/1/databases/my_database/collections/my_table/?apiKey=################################");
            MongoClient mongoClient = new MongoClient(new ServerAddress(requestUrl.getHost(),requestUrl.getPort()));
            DB db = mongoClient.getDB("my_database");
            DBCollection table = db.getCollection("my_table");
            BasicDBObject searchQuery = new BasicDBObject();
            searchQuery.put("name", "my_name");
            table.remove(searchQuery);
            Toast.makeText(params[0], "Deleted...", Toast.LENGTH_SHORT).show();
        }
        catch (Exception e) {
            Log.e("ERROR","MongoDB", e);
        }
        return null;
    }
}
{
    "_id": {
        "$oid": "5735d2e50a00b27acd69e10b"
    },
    "date": "14/5/2016",
    "longitude": "72.98868477344513",
    "name": "my_name",
    "latitude": "33.639541155896275"
}
例外情况

05-15 11:20:02.122 2651-2680/com.example.mongodatabase.mongo2 E/ERROR: MongoDB
com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting for a server that matches AnyServerSelector{}. Client view of cluster state is {type=Unknown, servers=[{address=api.mongolab.com:-1, type=Unknown, state=Connecting, exception={java.lang.IllegalArgumentException: port=-1}}]
at com.mongodb.BaseCluster.getServer(BaseCluster.java:82)
at com.mongodb.DBTCPConnector.getServer(DBTCPConnector.java:656)
at com.mongodb.DBTCPConnector.access$500(DBTCPConnector.java:40)
at com.mongodb.DBTCPConnector$MyPort.getConnection(DBTCPConnector.java:505)
at com.mongodb.DBTCPConnector$MyPort.get(DBTCPConnector.java:448)
at com.mongodb.DBTCPConnector.getPrimaryPort(DBTCPConnector.java:407)
at com.mongodb.DBCollectionImpl.remove(DBCollectionImpl.java:219)
at com.mongodb.DBCollectionImpl.remove(DBCollectionImpl.java:203)
at com.mongodb.DBCollection.remove(DBCollection.java:300)
at com.mongodb.DBCollection.remove(DBCollection.java:327)
at com.example.mongodatabase.mongo2.MongoDeletion.doInBackground(MainActivity.java:43)
at com.example.mongodatabase.mongo2.MongoDeletion.doInBackground(MainActivity.java:32)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:838)

错误消息告诉您出了什么问题:

com.mongodb.MongoTimeoutException:等待与AnyServerSelector{}匹配的服务器时,10000毫秒后超时。群集状态的客户端视图为{type=Unknown,servers=[{address=api.mongolab.com:-1,type=Unknown,state=Connecting,exception={java.lang.IllegalArgumentException:port=-1}]

它告诉您有一个非法的端口参数:java.lang.IllegalArgumentException:port=-1

MongoClient
构造函数中,您使用
requestUrl.getPort()
作为端口参数,但是

返回此URL的端口号,如果此URL没有显式端口,则返回-1


您的
requestUrl
字符串没有端口值,因此
getPort()
返回-1。
MongoDB
实例不接受-1作为端口号,因此它最终会超时,并给出您看到的异常。

错误消息告诉您出了什么问题:

com.mongodb.MongoTimeoutException:等待与AnyServerSelector{}匹配的服务器时,10000毫秒后超时。群集状态的客户端视图为{type=Unknown,servers=[{address=api.mongolab.com:-1,type=Unknown,state=Connecting,exception={java.lang.IllegalArgumentException:port=-1}]

它告诉您有一个非法的端口参数:java.lang.IllegalArgumentException:port=-1

MongoClient
构造函数中,您使用
requestUrl.getPort()
作为端口参数,但是

返回此URL的端口号,如果此URL没有显式端口,则返回-1


您的
requestUrl
字符串没有端口值,因此
getPort()
返回-1。
MongoDB
实例不接受-1作为端口号,因此它最终会超时,并给出您看到的异常。

谢谢!但请告诉我如何解决此问题?@SajalAli您的端口号是错误的。我建议您进行一些搜索,以找出正确的端口号以及n更新您的代码以使用该端口号。请查看以获取一些示例。谢谢!但请告诉我如何解决此问题?@SajalAli您的端口号是错误的。我建议您进行一些搜索,找出正确的端口号,然后更新您的代码以使用该端口号。请查看以获取一些示例。