Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 读取现有mongo数据库_Ruby On Rails_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails 读取现有mongo数据库

Ruby on rails 读取现有mongo数据库,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,我必须阅读现有的mongo数据库。mongoid适合这个吗 我找到的所有教程都是关于从头开始构建mongo数据库的 我曾尝试使用mongoid访问数据库,但没有显示现有信息,这就是我所尝试的 mongoid.yml: development: host: localhost database: managementdb test: host: localhost database: managementdb 我做了脚手架(我不喜欢mongoid接管脚手架的方式) 模型: cl

我必须阅读现有的mongo数据库。mongoid适合这个吗

我找到的所有教程都是关于从头开始构建mongo数据库的

我曾尝试使用mongoid访问数据库,但没有显示现有信息,这就是我所尝试的

mongoid.yml:

development:
  host: localhost
  database: managementdb

test:
  host: localhost
  database: managementdb
我做了脚手架(我不喜欢mongoid接管脚手架的方式)

模型:

class GamerProfile
  include Mongoid::Document
  store_in :profile

  field :facebookId, :type => String
  field :playerName, :type => String
  field :locale, :type => String
  field :dateJoined, :type => Time
end
但是localhost:27017/managementdb/Profile中的现有信息没有显示在视图中


我只需要只读访问。mongomapper或mongomodel更合适吗?

这取决于现有数据库包含的内容以及您想对其执行的操作。如果它只包含一些不特定于Rails的原始数据,则可以使用来对数据库执行原始查询


如果数据库是用Rails创建的,并且应该表示模型和其他Rails对象,那么您应该使用创建数据库时使用的名称(我怀疑是这样的)。

我在尝试mongoid之后尝试了mongomapper,它完全按照其名称的含义进行操作

假设我在mongodb中有一个名为
User
的集合,它与游戏中的用户相关,但不一定与该应用程序的
User
模型相关,然后我在名为
GameUser
的模型中使用
set\u collection\u name“User”

MongoMapper.connection = Mongo::Connection.new('localhost', 27017)
MongoMapper.database = "gamedb"
我的初始化器直接从mongodb文档中取出;以mongomapper为例

MongoMapper.connection = Mongo::Connection.new('localhost', 27017)
MongoMapper.database = "gamedb"
我的模型是这样的:

class GameUser
  include MongoMapper::Document

  set_collection_name "User"
  key :playerName, :type => String
  ...
  key :dateJoined, :type => Time
end

现在我的支架从
游戏用户
完美地加载数据。

你的意思是“Mongoid适合这个吗?”?是的,这就是我的意思。它是由另一个框架用另一种语言构建的原始数据,但我仍然想要它的模型和控制器,我只是不想使用mongo进行任何销毁操作(我必须使用rest api进行销毁)。@JosephLeBrech在这种情况下,你最好的办法可能是研究该框架如何使用数据库以及数据库的结构。这可能不是一项简单的任务。然后编写原始查询以获取所需的数据(并可能映射数据,以便根据需要映射某些对象)。难道你不能使用REST API来获取数据吗?这可能会让事情变得更简单。我一次只需要访问一个集合,我本以为模型会直接映射到集合。我尝试使用mongomapper,否则我可能不得不尝试从头开始。我相信映射器是为在集合中创建对象而设计的基于给定的模型,而不是相反。我尝试了mongomapper,它看起来是解决方案,检查我自己的答案XD如果您有一个模型的集合名称与mongodb中的集合名称不同,您可以执行
set\u collection\u name“foo”