1

私はMongoDBの初心者で、作成またはインポートしたデータの検索/アクセスでいくつかの問題に遭遇しました.2つの異なる場所に行き着きます.

このようにシェルを起動すると

 $ mongo

次に、データベースを表示します

$ show dbs

これにより、私が作成した約 10 個のデータベースのリストが表示されます。これらは /data/db ディレクトリにあります。「pact」という名前のデータベースは含まれていません。

しかし、このように接続すると

$ mongo localhost/pact

そして、する

 $show dbs

pact「mongo」を実行するだけで他の方法でmongoに接続するとリストされない1つのdb、dbのみがリストされます。「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)

そして、「show dbs」を実行します

/data/db ディレクトリ (協定を含まない) から dbs の長いリストを取得します。

irb を介してdb を見つけるためにpact、mongo localhost/pact の場合と同様に、localhost の後に含めるようにしました。

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

しかし、私はエラーが発生しました。

1 「pact」データベースがどのディレクトリにあるかを知る方法はありますか?

2 Mongoドライバーを使用しない場合、どうすればirbでアクセスできますか

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

シェルでこれを行うことができるので、これはうまくいくと思いましたmongo localhost/pact

3 私があなたに言ったことに基づいて、なぜこれが起こったのか説明できますか (データを別のディレクトリに保存するのは適切な方法ではないと思います)

4

1 に答える 1

1

私の提案は、シェルコンテキストで使用するmongodumpことmongo localhost/pactです

mongodump -d pact -o /out/dir

データベース全体をバックアップします。そして、通常のシェルコンテキストで使用mongorestoreしますmongo

mongorestore -d pact /out/dir

データベースを復元します。

于 2013-01-30T07:31:44.727 に答える