2012-03-01 95 views
0

我必須閱讀現有的mongo數據庫。 mongoid適合這個嗎?閱讀現有的mongo數據庫

我發現的所有教程都是關於從零開始構建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會更適合嗎?

+0

你的意思是「Mongoid適合這個嗎?」? – 2012-03-01 09:29:52

+0

是的這就是我的意思。 – 2012-03-01 09:31:08

回答

2

我試過mongomapper之後試過mongoid,它確實是它的名字所暗示的。

讓說我有一個在MongoDB中稱爲User收集它涉及到用戶在遊戲中,但不一定涉及User模型該應用程序,然後我在一個叫GameUser例如模型中使用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完美數據。

+0

如果您有一個與mongodb中的集合名稱不同的名稱,那麼您可以執行'set_collection_name「foo」' – Antony 2012-08-28 22:07:55

0

這取決於現有數據庫包含的內容以及您想要如何處理它。如果它只包含一些不特定於Rails的原始數據,則可以使用generic ruby driver對數據庫執行原始查詢。

如果數據庫是使用Rails創建的,並且應該表示模型和其他Rails對象,則應該使用它創建的object mapper(我懷疑是這種情況)。

+0

它是由另一種語言的另一個框架構建的原始數據,但我仍然想要它的模型和控制器,我不會有任何使用mongo的銷燬行爲(我必須使用rest api來銷燬)。 – 2012-03-01 10:29:57

+0

@JosephLeBrech在這種情況下,您最好的選擇是研究該框架如何使用數據庫以及數據庫的結構。這可能不是簡單的任務。然後編寫原始查詢以獲取所需的數據(並根據需要映射數據以獲得一些對象)。你不能使用REST API來獲取數據,可能會讓事情變得更簡單。 – Lycha 2012-03-01 10:39:18

+0

我只需要一次訪問一個集合,我會認爲模型會直接映射到集合。我試着用mongomapper,否則我可能不得不從頭開始嘗試。 – 2012-03-01 10:55:12