1

我是 MongoDB 的新手,在定位/访问我创建或导入的数据时遇到了一些问题,因为它最终位于两个不同的位置。

如果我这样启动外壳

 $ mongo

然后显示数据库

$ show dbs

这给了我一个我创建的大约 10 个数据库的列表。这些在 /data/db 目录中它不包括名为“pact”的数据库

但是,如果我这样连接

$ mongo localhost/pact

然后做

 $show dbs

它只列出了一个数据库,即pactdb,当我通过执行“mongo”以另一种方式连接到 mongo 时未列出该数据库。'Pact' 不在 /data/db 目录中。根据我的笔记,我可能通过这种方式启动 mongod 来制作“pact”数据库,

mongod --dbpath data

我认为会将它放在 data/db 目录中,然后像这样导入到 pact 目录中

mongoimport --stopOnError --db pact --collection products <  products.json

继续前进,如果我在 irb 中使用 mongo 并像这样开始

>> mongo_client = MongoClient.new("localhost", 27017)

然后执行“显示 dbs”

我从 /data/db 目录(不包括协议)中得到一长串 dbs。

为了pact通过 irb 找到 db,我尝试将它包含在 localhost 之后,就像我使用 mongo localhost/pact 一样

>> mongo_client = MongoClient.new("localhost/pact", 27017)

但我有一个错误。

1 有没有办法找出“pact”数据库所在的目录?

2 如果不是通过 Mongo 驱动程序,我如何在 irb 中访问它

mongo_client = MongoClient.new("localhost/pact", 27017)

我认为这会起作用,因为我可以在 shell 中做到这一点mongo localhost/pact

3 根据我告诉你的,你能解释一下为什么会这样吗(我假设这不是将数据保存在另一个目录中的正确方法)

4

1 回答 1

1

我的建议是mongodumpmongo localhost/pactshell 上下文中使用

mongodump -d pact -o /out/dir

备份整个数据库。并mongorestore在正常的mongoshell 上下文中使用

mongorestore -d pact /out/dir

恢复数据库。

于 2013-01-30T07:31:44.727 回答