2011-02-28 12 views
9

Używam klejnotów Rails 3 i Mongoid. Ale muszę wypełnić combobox z listą baz danych mongodb. W powłoce mongodb możemy wyświetlić listę baz danych za pomocą komendy "show dbs". Istnieją również polecenia getDBNameList() i db.getCollectionNames() w sterownikach mongodb. Ale nie mogłem wymyślić, jak używać tych poleceń z aplikacji Ruby on Rails.Jak zdobyć listę baz danych Mongodb i listy kolekcji z aplikacji Ruby on rails

Również się zastanawiam; jeśli mogę zdobyć bazy danych i listy kolekcji przy użyciu mongoid gem. Ponieważ jestem pewien, że przeczytałem, że mongoid obsługuje używanie więcej niż jednej bazy danych, ale myślę, że to zależało od modelu.

Co sądzisz; czy istnieje jakieś rozwiązanie, czy też muszę użyć klejnotu mongo-ruby, a nie mongoidu.

Odpowiedz

10

można wykonać następujące czynności przy użyciu Mongo sterownik Ruby

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

Byłoby łatwiej uzyskać Mongo::DB z config Mongoid:

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

możemy skonfigurować wszystkie bazy danych w Mongoid (przez mongoid.yml) dbs = Mongoid.databases dbs.each do | db | db.collections end – user622773

+0

connection = Mongoid.master.connection connection.database_names # => Uzyskaj tablicę nazw db = connection.database ("name") # => Pobierz określony obiekt db.bi.collections # => Pobierz tablicę kolekcji ##### Myślę, że jest to najlepszy sposób; Dzięki durran (z github). – user622773

+2

To nie wydaje się działać dla mnie (na mongoid 3.x): 'NoMethodError: undefined method \" master "dla Mongoid :: Config: Module' – turboladen

2

Krótka wersja.

db = Mongoid.master 
db.collection_names 
+2

Jak zrobiłbyś to z Mongoidem 3.0.0? – SteveO7

13

W mongoid 3

Mongoid.default_session.collections # returns the collections 

zazwyczaj wyodrębnić nazwy następująco:

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

default_session to default_client w mongo 5 – Eddie

-1

Korzystanie kierowca Java można wymienić nazwy tych baz danych za pomocą następującego

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