Вам нужно будет сделать Record.collection.insert(records)
.Обратите внимание, что при этом будут пропущены все проверки, которые вы написали в своей модели Mongoid, но это будет немного быстрее, чем создание mongoid-записей и их сохранение, поскольку при этом будет использоваться драйвер ruby mongo напрямую.Это следует делать только в том случае, если вы знаете, что данные непротиворечивы.
Если вы хотите выполнить все проверки ваших данных перед их сохранением в MongoDB, вам следует создать модель, а не помещать их в массив.
Таким образом, вы можете сохранить данные, извлеченные в MongoDB, тремя способами в соответствии с вашими предпочтениями:
- Вставьте все записи одновременно, используя драйвер Монго, но будьте осторожны, создаваемый вами массив может быть огромным:
query.each do |row|
.....
end
Record.collection.insert(records)
- Вставлять одну запись за раз, используя драйвер монго (замените
records << r
новой строкой)
query.each do |row|
.....
Record.collection.insert(r)
end
- Вставитьпо одной записи за раз с использованием Mongoid и всех проверок и обратных вызовов (замените
records << r
новой строкой)
query.each do |row|
.....
r.save
end
update: пропущено, что вы уже создаете запись, следовательно, mongoпредложения водителя.Если вы хотите использовать драйвер mongo напрямую, вы должны использовать хэш вместо модели Mongoid.т.е. вместо
r = Record.new
r.status = row[:status]
# copy more data
вы должны сделать
r = {}
r[:status] = row[:status]
# copy more data