我下载了一个mongoDB数据库,这意味着我有一套XXX.0 [xxx.1,...]和XXX.ns文件。我安装了mongoDB(在Mac OS X上使用Homebrew)并使用dbpath参数运行mongod,该参数指向包含这些文件的目录。但是,当我使用mongo shell并要求查看可用的数据库或集合时,除了本地'数据库,没有集合。我究竟做错了什么?我怎样才能让mongoDB看到'目录中的数据库? 谢谢, Yariv。
答案 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 mongodump和mongorestore以二进制格式导出/导入数据库内容,而不是复制数据库文件。