绑定cloud foundry后如何访问MongoDB values/data?

How to access MongoDB values/data after binding to cloud foundry?

我正在使用 spring 启动并使用 mongodb 数据库创建了一个 Web 应用程序。在本地,我使用命令提示符 "mongod" 和 "mongo",我可以在其中查询我在 UI.

中输入的数据

我当前的应用程序在默认端口为 27017 的本地主机上使用 MongoDb 运行。我的 Web 应用程序反映了存储在数据库中的数据。当我将此应用程序推送到 cloud foundry 并绑定 MONGODB 服务时,它使用另一个数据库。我在哪里以及如何 view/access 所有正在输入的数据。在本地机器上,我可以使用 db.collection.find() 并查询我的所有数据。

问题

一旦我将我的应用程序推送到 cloud foundry,我在本地存储的所有数据都不会与其链接。我能够将值存储到 PCF MongoDB。但是我不知道如何查看其中的数据。有没有命令或方法可以查看我输入PCF的所有数据MongoDB?

尝试

查看我的 VCAP_SERVICES 我能够看到我的数据库名称、用户名和密码。但它们看起来像是加密的,字母数字和连字符混合在一起。下面的示例 VCAP 的外观(副本值,相同格式)

"database": "9faf201a-39b1-4lse-49242f404g11"
"host": "10.100.100.333"
"password": "2jnkj4nk22kk5lk6kj4n4k6nkj6001"
"username": "401849301k-8g3f-5c3j-k28-583920308592f04"

我尝试在 CLI 中使用下面的代码

mongo someurl.mongodomain.com:45475/database_name -u username -p password

因此,对于数据库名、用户名和密码,我只是简单地复制并粘贴了看起来经过加密的用户名和密码

mongo myurl.com:1337/9faf201a-39b1-4lse-49242f404g11 -u 401849301k-8g3f-5c3j-k28-583920308592f04" -p 2jnkj4nk22kk5lk6kj4n4k6nkj6001

我发现连接失败了。也许我必须输入正确的用户名和密码。在哪里可以设置用户名和密码?我正在使用 spring 引导,它是自动为我处理的。因此,我从未创建用户名或密码。

这里有五个建议(感谢 Daniel.Mikusa 最后一个):

  • 为 mongodb 推送网络客户端并将其绑定到您的数据库。 mongo express 似乎有一个 cloudfoundry 包装器:https://github.com/komushi/cf-mongo-express .

  • 您可以使用 mongo 客户端程序连接到远程 mongodb,其方式与连接本地 mongodb 的方式类似.您可以在应用的环境中找到凭据(用户名、密码、数据库名称):

    cf env <your-app-name>
    

    但是,对 mongodb 实例的访问可能会被 CloudFoundry 安装之外的计算机阻止。在这种情况下,您可能想尝试下一个选项。

  • 将安装了 mongo 客户端的 docker 容器推送到 cloudfoundry。 SSH 进入 docker 容器,并从那里使用 mongo 客户端。未在所有 cloudfoundry 安装中启用将 docker 容器推送到 CF。

  • 最后,您可以通过 REST 控制器公开您的域对象。可能使用 spring 数据剩余:http://projects.spring.io/spring-data-rest/

  • 使用 cf ssh 和 ssh 隧道。将 mongodb 实例绑定到应用程序,运行 cf env 以获取主机、端口和凭据(或制作服务密钥)。然后 运行 cf ssh -N -L <localport>:<service-fqdn-or-ip>:<remote-port> app-name(您连接的应用程序并不重要,它只是我们正在通过的应用程序)。现在将客户端连接到 localhost:<localport> 并使用您从 cf env.

  • 获得的凭据