如何将mongodb连接到现有的一组数据库文件

时间:2016-01-18 15:46:41

标签: macos mongodb

我下载了一个mongoDB数据库,这意味着我有一套XXX.0 [xxx.1,...]和XXX.ns文件。我安装了mongoDB(在Mac OS X上使用Homebrew)并使用dbpath参数运行mongod,该参数指向包含这些文件的目录。但是,当我使用mongo shell并要求查看可用的数据库或集合时,除了本地'数据库,没有集合。我究竟做错了什么?我怎样才能让mongoDB看到'目录中的数据库? 谢谢, Yariv。

1 个答案:

答案 0 :(得分:1)

根据您下载的数据库文件命名,使用MongoDB MMAPv1 storage engine生成文件。好像它是使用MongoDB WiredTiger storage engine生成的,您将拥有collection.*.wt个文件。

现在,如果您刚刚通过自制程序安装了MongoDB的最新稳定版本,目前是v3.2。这将伴随new default storage engine of WiredTiger

如果目录中还有local.<n>local.ns个文件,MongoDB会给出一个错误,指出存储文件不兼容,如下所示:

[initandlisten] exception in initAndListen: 28662 Cannot start server. Detected data files in /data/target created by the 'wiredTiger' storage engine, but the specified storage engine was 'mmapv1'., terminating

如果没有这些文件,mongod将与WiredTiger存储引擎一起运行,并忽略现有(复制)的MMAPv1文件。

如果是这种情况,您可以使用--storageEngine选项运行mongod以指定MMAPv1。这会将mongod设置为与MMAPv1存储引擎一起运行。例如:

mongod --dbpath <your db files dir> --storageEngine=mmapv1

同样对于记录,checkout mongodumpmongorestore以二进制格式导出/导入数据库内容,而不是复制数据库文件。