2011-02-28 9 views
9

私はRails 3とMongoid gemを使用しています。しかし、私はコンボボックスにmongodbデータベースのリストを記入する必要があります。 mongodbシェルでは、 "show dbs"コマンドでデータベースをリストできます。また、mongodbドライバにはgetDBNameList()とdb.getCollectionNames()コマンドがあります。しかし、私はどのようにレールアプリ上のルビーからこれらのコマンドを使用するかを理解できませんでした。ruby​​ on rails appからmongodbデータベースとコレクションのリストを取得する方法

また、 mongoid gemを使ってデータベースとコレクションのリストを取得できれば私はmongoidサポートを複数のデータベースを使って読んだことは確かですが、モデルに依存していると思います。

あなたはどう思いますか。何か解決策があるか、またはmongo-ruby-driver gemを使用する必要があります。mongoidではありません。

答えて

10

あなたはモンゴルビードライバ使用して次の操作を行うことができます:Mongoidの設定のうち、Mongo::DBを取得するために容易になるだろう

require 'rubygems' 
require 'mongo' 

connection = Mongo::Connection.new("localhost") 
connection.database_names.each do |name| 
    db = connection.db(name) 
    db.collections.each do |collection| 
    puts "#{name} - #{collection.name}" 
    end 
end 
3

を:

db = Mongoid::Config.master 
db.collection_names 
+0

を使用してデータベース名を一覧表示することができますMongoidのすべてのデータベースを設定することができます(via mongoid.yml)dbs = Mongoid.databases dbs.each do | db | db.collections end – user622773

+0

connection = Mongoid.master.connection connection.database_names#=>名前の配列を取得するdb = connection.database( "name")#=>特定のdbオブジェクトを取得するdb.collections#=>配列を取得するコレクションの#####これは最良の方法だと思います。 durran(githubから)に感謝します。 – user622773

+2

Mongoid :: Config:Module'のための 'NoMethodError:未定義のメソッド\'マスター ' – turboladen

2

ショートバージョン。で

db = Mongoid.master 
db.collection_names 
+2

Mongoid 3.0.0でこれをどうやって行いますか? – SteveO7

13

mongoid 3

Mongoid.default_session.collections # returns the collections 
次のように

私は通常の名前を抽出します。

Mongoid.default_session.collections.map(&:name).sort 
+1

default_sessionはmongo 5のdefault_clientです。 – Eddie

-1

使用したJavaドライバでは、次の

Mongo mongo = new Mongo("127.0.0.1"); 
mongo.getDatabaseNames(); 
関連する問題