2011-02-28 13 views
9

bir ruby ​​üzerinden mongodb veritabanları ve koleksiyonlar listesi nasıl elde edilir Rails 3 ve Mongoid gem kullanıyorum. Ama birleşik kutuyu, mongodb veritabanları listesiyle doldurmalıyım. Mongodb kabuğunda "show dbs" komutu ile veritabanlarını listeleyebiliriz. Ayrıca mongodb sürücülerinde getDBNameList() ve db.getCollectionNames() komutları bulunur. Ancak bu komutları raylar uygulamasında bir yakuttan nasıl kullanacağımı anlayamadım.Raylar uygulaması

Ayrıca merak ediyorum; Eğer mongoid gem kullanarak veritabanları ve koleksiyonlar listesi alabilir miyim. Çünkü mongoid desteklerini birden fazla veri tabanı kullanarak okuduğumdan eminim, ama modele bağlı olduğunu düşünüyorum.

Peki siz ne düşünüyorsunuz; herhangi bir çözüm var mı yoksa mongo-ruby-driver mücevher kullanmak zorundayım, mongoid değil.

cevap

10

Aşağıdaki kullanarak Mongo yakut sürücüsünü yapabilirsiniz:

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

O Mongoid yapılandırma dışına Mongo::DB almak için daha kolay olurdu:

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

kullanarak veritabanı adlarını listeleyebilirsiniz Mongoid'deki tüm veritabanlarını yapılandırabiliriz mongoid.yml) dbs = Mongoid.databases dbs.each do | db | db.collections end – user622773

+0

connection = Mongoid.master.connection connection.database_names # => İsim dizisi alın db = connection.database ("name") # => Belirli bir db nesnesini al db.collections # => Bir dizi alın koleksiyonların ##### Bunun en iyi yol olduğunu düşünüyorum; Durran'a teşekkürler (github'dan). – user622773

+2

Bu benim için işe yaramaz (mongoid 3.x üzerinde): 'NoMethodError: Mongoid için undefined method \' master ':: Config: Module' – turboladen

2

kısa versiyonu. Gelen

db = Mongoid.master 
db.collection_names 
+2

Mongoid 3.0.0 ile bunu nasıl yaparsınız? – SteveO7

13

mongoid 3

Mongoid.default_session.collections # returns the collections 
şöyle

Genellikle isimleri ayıklamak:

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

default_session mongo 5'teki default_client – Eddie

-1

kullanarak Java sürücüsü aşağıdaki

Mongo mongo = new Mongo("127.0.0.1"); 
mongo.getDatabaseNames();