Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用mongoid的Ruby数据作业_Ruby_Mongodb_Mongoid - Fatal编程技术网

使用mongoid的Ruby数据作业

使用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

我试图使用ruby和mongoid从oracle数据库中提取一些数据,并将其放入mongoDB中,以便对其执行一些操作

问题是:

我使用includes Mongoid::Document创建了我的“Record”类,并设置了我的所有字段,已经分配了来自oracle数据库的数据,并将我的所有BSON对象存储在一个数组中

现在我的问题是:我如何拯救他们

这是我的代码

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