Bulk.insert()
On this page
Tip
Starting in version 3.2, MongoDB also provides the
db.collection.bulkWrite()
method for performing bulk
write operations.
Description
Bulk.insert(<document>)
Adds an insert operation to a bulk operations list.
Bulk.insert()
accepts the following parameter:ParameterTypeDescriptiondoc
documentDocument to insert. The size of the document must be less than or equal to the maximum BSON document size.
Behavior
Insert Inaccuracies
Even if you encounter a server error during an insert, some documents may have been inserted.
After a successful insert, the system returns BulkWriteResult.insertedCount
, the number
of documents inserted into the collection. If the insert
operation is interrupted by a replica set state change,
the system may continue inserting documents. As a result,
BulkWriteResult.insertedCount
may report fewer documents than actually inserted.
Performance Consideration for Random Data
If an operation inserts a large amount of random data (for example, hashed indexes) on an indexed field, insert performance may decrease. Bulk inserts of random data create random index entries, which increase the size of the index. If the index reaches the size that requires each random insert to access a different index entry, the inserts result in a high rate of WiredTiger cache eviction and replacement. When this happens, the index is no longer fully in cache and is updated on disk, which decreases performance.
To improve the performance of bulk inserts of random data on indexed fields, you can either:
Drop the index, then recreate it after you insert the random data.
Insert the data into an empty unindexed collection.
Creating the index after the bulk insert sorts the data in memory and performs an ordered insert on all indexes.
Example
The following initializes a Bulk()
operations builder for the
items
collection and adds a series of insert operations to add
multiple documents:
var bulk = db.items.initializeUnorderedBulkOp(); bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } ); bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } ); bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } ); bulk.execute();