批量/批量插入/更新模型化数据

时间:2015-04-15 00:44:53

标签: mongodb mongoid

我想加快插入操作,

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

所以我试图暂时将数据存储在@bulk_data

并将其插入最后一步model.collection.insert(@bulk_data)

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

因为我使用动态属性,所以我不能简单地将每个数据存储在哈希

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

model.collection.insert(@bulk_data)

1 个答案:

答案 0 :(得分:0)

  

因为我使用动态属性,所以我不能简单地将每个数据存储在哈希

事实并非如此。您应该为哈希动态生成密钥没有问题。

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

@bulk_data << new_data.as_document

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