如何从rails应用程序上的ruby获取mongodb数据库和集合列表的列表

我正在使用Rails 3和Mongoid gem。 但我需要用mongodb数据库列表填充一个combobox。 在mongodb shell中,我们可以使用“show dbs”命令列出数据库。 mongodb驱动程序中还有getDBNameList()和db.getCollectionNames()命令。 但我无法弄清楚如何在rails应用程序上使用来自ruby的这些命令。

我也在想; 如果我可以使用mongoid gem获取数据库和集合列表。 因为我确信我已经读过mongoid支持使用多个数据库,但我认为它依赖于模型。

所以你怎么看; 有什么解决方案,或者我必须使用mongo-ruby-driver gem,而不是mongoid。

在mongoid 3

Mongoid.default_session.collections # returns the collections 

我通常提取名称如下:

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

您可以使用mongo 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 

从Mongoid配置中获取Mongo :: DB会更容易:

 db = Mongoid::Config.master db.collection_names 

一个简短的版本。

 db = Mongoid.master db.collection_names 

使用Java驱动程序,您可以使用以下内容列出数据库名称

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