我想加快插入操作,
因为我要插入数十亿的数据,
所以我试图暂时将数据存储在@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)
答案 0 :(得分:0)
因为我使用动态属性,所以我不能简单地将每个数据存储在哈希
中
事实并非如此。您应该为哈希动态生成密钥没有问题。
无论如何,要解决'to_bson'
错误,只需在将模型插入as_document
数组时调用模型上的@bulk_data
即可。像这样:
@bulk_data << new_data.as_document
作为旁注,为了加快插入速度,您应确保没有要维护的大量索引。当然,请确保您没有运行任何类型的存在验证,因为每次您想要find
时,这会有效地导致代码insert
。