使用Mongoid从mongoDB获取对象

时间:2012-06-06 10:02:49

标签: ruby mongodb orm sinatra mongoid

足够简单的情况。我有一个MongoDB数据库,其中包含来自前一位开发人员的大量信息。但是我手头的模型信息有限,我不能访问原始的模型类。我一直在修补MongoDB驱动程序以获取更多信息(MongoID最终必须用于将对象映射回来),如下所示。

#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,可以随意使用上面的代码,它对调试恕我直言很方便。

1 个答案:

答案 0 :(得分:2)

所以这是一次破产。

最后,我使用Mondb驱动程序手动将数据拉出查询。然而,创建对象要困难得多。

使用ORM时,最好拥有实际模型。