Module: Mongoid::Bulk::Import

Extended by:
ActiveSupport::Concern
Defined in:
lib/mongoid/bulk/import.rb,
lib/mongoid/bulk/import/version.rb

Defined Under Namespace

Classes: Result

Constant Summary collapse

VERSION =
"0.2.0"

Instance Method Summary collapse

Instance Method Details

#bulk_insert(attributes = nil, options = {}, &block) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/mongoid/bulk/import.rb', line 10

def bulk_insert(attributes = nil, options = {}, &block)
  _creating do
    if attributes.is_a?(::Array)
      documents = attributes.map { |attrs| bulk_insert_obj(attrs, options, &block) }
    else
      documents = [bulk_insert_obj(attributes, options, &block)]
    end
    valid_documents, invalid_documents = documents.partition { |doc| doc.errors.none? }
    response = collection.insert_many(valid_documents.map(&:as_document)) unless valid_documents.blank?
    Result.new(invalid_documents, response&.inserted_count || 0, response&.inserted_ids || [])
  end
end

#bulk_insert_obj(attributes = nil, options = {}, &block) ⇒ Object



23
24
25
26
27
# File 'lib/mongoid/bulk/import.rb', line 23

def bulk_insert_obj(attributes = nil, options = {}, &block)
  doc = new(attributes, &block)
  doc.valid? if (options[:validate].nil? ? true : options[:validate])
  doc
end