2012-06-06 92 views
0

足夠簡單的情況。我有一個MongoDB數據庫,其中包含以前開發人員提供的大量信息。然而,我對手前的模型的信息有限,而且我不能訪問原始模型類。我一直在修改MongoDB驅動程序以獲得更多的信息(最終必須使用MongoID來將對象映射回去)如下。使用Mongoid從mongoDB獲取對象

#The flow is as follows 
    #Connection 
    #Databases 
    #Database 
    #Collection 
    #Hash Info 

    #Setup the connection. you can supply attributes in the form of ("db",portno) but most of the time it will pick up the defaults 
    conn = Mongo::Connection.new 

    #Database info 
    mongodbinfo =conn.database_names 
    conn.database_info.each { |info| puts info.inspect } 


    db = conn.db("db_name_here") 
    db.collection_names.each { |collection| puts collection.inspect } 


    collection = db.collection("model_name_here") 
    puts collection.inspect 

    collection.find.each { |row| 
    puts row.inspect 
    puts row.class 
    } 

每一行都是一個單獨的對象,並且和MongoDB一樣,每個對象/文檔都是一個BSON對象。

所以底線的問題是我如何使用mongoID將BSON反序列化爲模型?

P.s隨意使用上面的代碼,如果你想找出一個新的mongoDB,它方便調試恕我直言。

回答

2

所以這是一個破產。

最後,我使用Mondb驅動程序手動將查詢數據拉出。然而,創建對象要困難得多。

使用ORM時,最好有實際的模型。