Mongo shell 不显示数据库?

Con*_*eer 5 mongodb

我有各种 Mongo 数据库,当我ls -l在 CentOS linux 中执行操作时,我可以看到每个数据库的 databaseA.0 和 databaseA.ns 文件,并且文件大小足以告诉我的数据仍然存在,但是当我转到 mongoDB 时shell 通过执行mongo命令并执行 ashow dbsshow databases它只显示 admin(empty)、local 0.078GB 和 test(empty)。如何取回我的数据库?

附加信息:当我启动 mongo shell 时,我得到以下信息:

MongoDB shell version: 2.6.4
connecting to: test
Server has startup warnings:
2014-08-15T23:23:14.300-0500 [initandlisten]
2014-08-15T23:23:14.300-0500 [initandlisten] ** WARNING: You are running in OpenVZ which can cause issues on versions of RHEL older than RHEL6.
2014-08-15T23:23:14.300-0500 [initandlisten]
2014-08-15T23:23:14.300-0500 [initandlisten] ** WARNING: /proc/sys/vm/zone_reclaim_mode is 1
2014-08-15T23:23:14.300-0500 [initandlisten] **          We suggest setting it to 0
2014-08-15T23:23:14.300-0500 [initandlisten] **          http://www.kernel.org/doc/Documentation/sysctl/vm.txt
2014-08-15T23:23:14.300-0500 [initandlisten]
Run Code Online (Sandbox Code Playgroud)

Ste*_*nie 5

检查 dbpath

我会检查dbpathMongoDB 使用的设置是否设置为您期望的值。

mongoshell 中,运行:

 db.adminCommand("getCmdLineOpts")
Run Code Online (Sandbox Code Playgroud)

如果有一个dbpath集合,它将在那里列为parsed.storage.dbPath(因为您使用的是 MongoDB 2.6)。如果没有明确设置,dbpath将默认为/data/db.

如果使用了配置文件,您还应该看到 .conf 中列出的配置的路径parsed.config

要修复dbpath您需要更新配置文件并重新启动mongod

设置 dbpath

注意MongoDB 2.6支持两种配置文件格式,所以需要匹配现有文件的格式:

YAML 配置使用分号作为分隔符,而旧格式使用等号。