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

时间:2011-02-28 13:57:38

标签: ruby-on-rails mongodb mongoid

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

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

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

5 个答案:

答案 0 :(得分:13)

在mongoid 3中

Mongoid.default_session.collections # returns the collections

我通常按如下方式提取名称:

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

答案 1 :(得分:10)

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

答案 2 :(得分:3)

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

db = Mongoid::Config.master
db.collection_names

答案 3 :(得分:2)

简短版本。

db = Mongoid.master
db.collection_names

答案 4 :(得分:-1)

使用Java驱动程序,您可以使用以下

列出数据库名称
Mongo mongo = new Mongo( "127.0.0.1" );
mongo.getDatabaseNames();