【问题标题】:Batch/bulk insert/update modelized data批量/批量插入/更新模型化数据
【发布时间】:2015-04-15 00:44:52
【问题描述】:

我想加快插入操作,

因为我有数十亿的数据要插入,

所以我尝试将数据临时存储在@bulk_data中

并在最后一步插入,model.collection.insert(@bulk_data)

但我得到了NoMethodError: undefined method 'to_bson' for

因为我使用的是动态属性,所以不能简单的把每一个数据都存储在hash中

LOOP BEGIN
@bulk_data = []
new_data = model.capitalize.constantize.new
new_data.title = ...
@bulk_data << new_data
....
LOOP END

model.collection.insert(@bulk_data)

【问题讨论】:

    标签: mongodb mongoid


    【解决方案1】:

    因为我使用的是动态属性,所以不能简单的把每一个数据都存储在hash中

    这不是真的。为哈希动态生成密钥应该没有问题。

    无论如何,要解决您的'to_bson' 错误,您只需在将模型插入@bulk_data 数组时调用模型上的as_document。像这样:

    @bulk_data << new_data.as_document
    

    附带说明,为了加快插入速度,您应该确保没有大量索引需要维护。当然,请确保您没有运行任何类型的存在验证,因为这会有效地导致每次您想要 insert 时将代码变为 find

    【讨论】:

      猜你喜欢
      • 2012-02-16
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多