【问题标题】:Reading an existing mongo database读取现有的 mongo 数据库
【发布时间】:2012-03-19 18:54:48
【问题描述】:

我必须阅读现有的 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 会更适合吗?

【问题讨论】:

  • 你的意思是“Mongoid 适合这个吗?”?
  • 是的,我就是这个意思。

标签: ruby-on-rails mongodb mongoid


【解决方案1】:

这取决于现有数据库包含什么以及您想用它做什么。如果它只包含一些不是特定于 Rails 的原始数据,您可以使用 generic ruby driver 对数据库进行原始查询。

如果数据库是用 Rails 创建的,并且应该代表模型和其他 Rails 对象,则应该使用创建它的 object mapper(我怀疑是这种情况)。

【讨论】:

  • 它是由另一个框架用另一种语言构建的原始数据,但我仍然想要它的模型和控制器,我只是不会使用 mongo 进行任何破坏操作(我必须使用休息用于销毁的 API)。
  • @JosephLeBrech 在这种情况下,您最好的选择可能是研究该框架如何使用数据库以及数据库的结构是什么。这可能不是一个简单的任务。然后编写您的原始查询以获取您需要的数据(并可能根据需要映射数据以便一些对象)。难道你不能也使用 REST API 来获取数据吗,可能会让你的事情变得更简单。
  • 我一次只需要访问一个集合,我原以为模型会直接映射到集合。我尝试使用 mongomapper,否则我可能不得不尝试从头开始。
  • 我相信映射器旨在根据给定模型在集合中创建对象,而不是相反。
  • 我已经尝试过 mongomapper,它看起来是解决方案,检查我自己的答案 XD
【解决方案2】:

在尝试过 mongoid 之后,我尝试了 mongomapper,它的功能完全符合其名称的含义。

假设我在 mongodb 中有一个名为 User 的集合,它与游戏中的用户相关,但不一定与该应用程序的 User 模型相关,然后我在名为 @987654324 的模型中使用 set_collection_name "User" @例如。

我的初始化程序是直接从 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

现在我的脚手架完美地加载到来自GameUser 的数据。

【讨论】:

  • 如果你有一个模型与mongodb中的集合名称不同,你可以set_collection_name "foo"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多