使用mongoid的Ruby数据作业
我试图使用ruby和mongoid从oracle数据库中提取一些数据,并将其放入mongoDB中,以便对其执行一些操作 问题是: 我使用includes Mongoid::Document创建了我的“Record”类,并设置了我的所有字段,已经分配了来自oracle数据库的数据,并将我的所有BSON对象存储在一个数组中 现在我的问题是:我如何拯救他们 这是我的代码使用mongoid的Ruby数据作业,ruby,mongodb,mongoid,Ruby,Mongodb,Mongoid,我试图使用ruby和mongoid从oracle数据库中提取一些数据,并将其放入mongoDB中,以便对其执行一些操作 问题是: 我使用includes Mongoid::Document创建了我的“Record”类,并设置了我的所有字段,已经分配了来自oracle数据库的数据,并将我的所有BSON对象存储在一个数组中 现在我的问题是:我如何拯救他们 这是我的代码 query = db.report # Sequel Object query.each do |row| r = Recor
query = db.report # Sequel Object
query.each do |row|
r = Record.new #Mongoid class
r.directory_name = row[:directory_name]
r.directory_code = row[:directory_id]
r.directory_edition = row[:edition]
r.last_updated = row[:updated]
r.canvass = row[:canvass_id]
r.specialty_item = row[:item]
r.production_number = row[:prodnr]
r.status = row[:exposure_status]
r.scanned_date = row[:scandate]
r.customer_id = row[:customer_id]
r.sales_rep = row[:sales_rep_name]
r.phone = row[:phone]
r.customer_name = row[:customer_name]
records << r
end
query=db.report#Sequel对象
query.do每行|
r=Record.new#Mongoid类
r、 目录名称=行[:目录名称]
r、 目录\代码=行[:目录\ id]
r、 目录_edition=行[:edition]
r、 上次更新=行[:更新]
r、 canvass=行[:canvass\u id]
r、 专业\项目=行[:项目]
r、 生产编号=行[:生产编号]
r、 状态=行[:曝光状态]
r、 扫描日期=行[:扫描日期]
r、 客户标识=行[:客户标识]
r、 销售代表=行[:销售代表名称]
r、 电话=行[:电话]
r、 客户名称=行[:客户名称]
记录您需要执行Record.collection.insert(记录)
。尽管请注意,这将跳过您在Mongoid模型中编写的任何验证,但会比创建Mongoid记录并保存它们快一点,因为它将直接使用ruby mongo驱动程序。只有当您知道数据是一致的时,才应该这样做
如果您想在将数据保存到MongoDB之前对其进行所有验证,那么应该创建一个模型,而不是将其放入数组中
因此,您可以根据自己的偏好以三种方式持久化在MongoDB中提取的数据:
- 使用mongo驱动程序一次插入所有记录,但请注意,您创建的阵列可能非常庞大:
query.do每行|
.....
结束
记录.集合.插入(记录)
- 使用mongo驱动程序一次插入一条记录(替换
记录
query.each do |row|
.....
end
Record.collection.insert(records)
query.each do |row|
.....
Record.collection.insert(r)
end
query.each do |row|
.....
r.save
end
r = Record.new
r.status = row[:status]
# copy more data
r = {}
r[:status] = row[:status]
# copy more data