很简单的情况。我有一个 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 反序列化为模型?
Ps 如果您试图找出一个新的 mongoDB,请随意使用上面的代码,它对于调试恕我直言很方便。