Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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
Android MongoDB错误:can';t调用某物/127.0.0.1:27017/admin_Android_Mongodb - Fatal编程技术网

Android MongoDB错误:can';t调用某物/127.0.0.1:27017/admin

Android MongoDB错误:can';t调用某物/127.0.0.1:27017/admin,android,mongodb,Android,Mongodb,我正在尝试通过android应用程序连接到mongodb,mongodb正在本地运行 MongoClient mongoClient = new MongoClient(); DB db = mongoClient.getDB("dbname"); 我收到错误,因为无法调用某些内容:/127.0.0.1:27017/admin mongodb在后面运行 我想知道为什么是管理员??我的数据库中没有像admin这样的集合 当我使用命令行进行连接时,它会工作,并且我能够插入和查询数据 我不知道出了什

我正在尝试通过android应用程序连接到mongodb,mongodb正在本地运行

MongoClient mongoClient = new MongoClient();
DB db = mongoClient.getDB("dbname");
我收到错误,因为无法调用某些内容:/127.0.0.1:27017/admin mongodb在后面运行

我想知道为什么是管理员??我的数据库中没有像admin这样的集合

当我使用命令行进行连接时,它会工作,并且我能够插入和查询数据

我不知道出了什么问题。到目前为止,我浏览的示例中没有提到任何需要进行的配置


请帮忙

由于您的应用程序是在Android中运行的,因此我会隐式地假设您的MongoDB服务器必须在其他地方运行,而该ip地址不是127.0.0.1。默认情况下,在没有主机名/ip地址的情况下,MongoClient尝试连接到端口27017上的本地主机环回地址127.0.0.1(在指定其他端口之前为默认端口),但失败,因为本地主机上运行着MongoDB服务器实例。我建议如下:

  • 查看服务器所在位置的详细信息,并获取其主机名/端口详细信息
  • 进一步了解MongoDB Java API和一些示例应用程序,了解如何访问在不同服务器上运行的MongoDB

  • 正如在您的问题上所评论的,由于您的客户端与服务器位于不同的平台上,您需要指定完整的主机连接,而不是使用默认连接

    也就是说:

    不要那样做

    您肯定不希望通过这种方式通过internet访问MongoDB实例。您需要的是一个web服务来代理您的请求并将它们传递给MongoDB。您可以自己做,也可以查看下面列出的内容:


    出于各种原因,将数据库公开给internet从来都不是一个好主意,但最突出的两个原因是安全和防火墙规则,它们不允许通过某些端口进行通信。HTTP将在任何地方都可用,并且是移动应用程序最有用的通信方式。

    您正在Android上运行该代码?你的MongoDB服务器在哪里?您通常需要使用数据库服务器的IP地址,而不只是接受默认值,默认值通常是环回适配器(127.0.0.1)。@pcurry-我在本地运行mongodb..我在命令提示符下发出了以下命令..“C:\mongodb\bin\mongod.exe”,得到了类似的结果。。。Wed Feb 05 00:52:30.918[initandlisten]等待端口27017上的连接Wed Feb 05 00:52:30.918[WebVR]管理web控制台等待端口28017上的连接,因此它告诉mongodb正在侦听端口27017…因此在代码中,我假设使用端口27017和主机作为“本地主机”…如果我错了,请纠正我..我在上面尝试了它仍然不起作用您提到的链接告诉我们使用new命令连接到mongoclient..但是没有提到在执行应用程序之前在命令提示符下运行mongodb..如果我使用该命令在本地运行..它会给出以下结果[initandlisten]等待连接端口27017 Wed Feb 05 00:52:30.918[WebVR]管理web控制台等待连接端口28017我还尝试在heroku中托管mongodb…得到了一个类似这样的长url“.mongoab.com:61198/heroku_app”。.当我使用“mongo.mongolab.com:61198/heroku_app-u username-p password”时在命令提示符下,我可以连接到数据库并在其中插入文档…我应该如何使用mongoclient()api在android应用程序中使用此url。。在新的mongoclient()方法中提供相同的url???提前谢谢!!当我给出那个url时,它将异常显示为无效Int,所以你的意思是说我应该使用node.js中编写的REST api来访问mongodb??嗯,我在本地也试过了。效果很好。但是想到了直接从android应用程序连接mongodb,然后使用mongodb api插入、查询数据??不使用webservices而不是直接连接mongodb有什么缺点吗?该链接列出了已经存在的几个REST实现。您可以使用这些或您自己编写的服务点。我用我的理由编辑了我的回答,这样做被认为是最佳实践。除了简单的CRUD操作之外,您当然希望使用远程数据为任何有用的移动应用程序提供某种服务器端组件和处理。好的,Neil将检查API谢谢您的建议:)