Docs Home → Start with Guides
In this guide, you will insert data into MongoDB.
Time required: 15 minutes
A connection string to your MongoDB deployment.
Sample datasets loaded into your cluster.
An installed MongoDB Driver.
Switch to the database and collection you want to work with. In this case you will be using the Create and insert three new documents for the The name The official name The orbital period in years The radius in miles The mass in kilograms If you omit the Many write operations in MongoDB return a result object that contains information about the operation. Here is the complete code followed by sample output. Your sample_guides
database and comets
collection.comets
collection. Each document consists of the following information about the comet:Tip
_id
field, the driver automatically generates a unique ObjectId
value for the _id
field.Note
ObjectId
values
will differ from those shown.
If you have completed this guide, you have inserted data into MongoDB.
In the next guide, you will learn how to update a field in a document.
See the following resources for more in-depth information about the concepts presented here:
Insert Documents
Insert Methods
Docs Home → MongoDB Manual
Important
Deprecated mongosh Method
db.collection.insert[]
Inserts a document or documents into a collection.
The insert[]
method has the following
syntax:
db.collection.insert[ , { writeConcern: , ordered: } ]
| document or array | A document or array of documents to insert into the collection. |
| document | Optional. A document expressing the write concern. Omit to use the default write concern. See Write Concern. Do not explicitly set the write concern for the operation if run in a transaction. To use write concern with transactions, see Transactions and Write Concern. |
| boolean | Optional. If If Defaults to |
The insert[]
returns an object that contains the status of the operation.
|
The insert[]
method uses the insert
command, which uses the default
write concern. To specify a different write concern, include the write concern in the options parameter.
If the collection does not exist, then the insert[]
method will create the collection.
If the
document does not specify an _id field, then MongoDB will add the _id
field and assign a unique ObjectId[]
for the document before inserting. Most drivers create an ObjectId and insert the _id
field, but the
mongod
will create and populate the _id
if the driver or application does not.
If the document contains an _id
field, the _id
value must be unique within the collection to avoid duplicate key error.
db.collection.insert[]
can be used inside multi-document transactions.
Important
In most cases, multi-document transaction incurs a greater performance cost over single document writes, and the availability of multi-document transactions should not be a replacement for effective schema design. For many scenarios, the denormalized data model [embedded documents and arrays] will continue to be optimal for your data and use cases. That is, for many scenarios, modeling your data appropriately will minimize the need for multi-document transactions.
For additional transactions usage considerations [such as runtime limit and oplog size limit], see also Production Considerations.
Starting in MongoDB 4.4, you can create collections and indexes inside a multi-document transaction if the transaction is not a cross-shard write transaction.
Specifically, in MongoDB 4.4 and greater, if you specify an insert on a non-existing collection in a transaction, the collection is implicitly created.
In MongoDB 4.4 and earlier, the operation must be run on an existing collection.
Tip
See also:
Do not explicitly set the write concern for the operation if run in a transaction. To use write concern with transactions, see Transactions and Write Concern.
The following examples insert documents into the products
collection. If the collection does not exist, the insert[]
method creates the collection.
In the following example, the document passed to the insert[]
method does not contain the _id
field:
db.products.insert[ { item: "card", qty: 15 } ]
During the insert, mongod
will create the _id
field and assign it a unique ObjectId[]
value, as verified by the inserted document:
{ "_id" : ObjectId["5063114bd386d8fadbd6b004"], "item" : "card", "qty" : 15 }
The ObjectId
values are specific to the machine and time when the operation is run. As such, your values may differ from those in the example.
In the following example, the document passed to the
insert[]
method includes the _id
field. The value of _id
must be unique within the collection to avoid duplicate key error.
db.products.insert[ { _id: 10, item: "box", qty: 20 } ]
The operation inserts the following document in the products
collection:
{ "_id" : 10, "item" : "box", "qty" : 20 }
The following example performs a bulk insert of three documents by
passing an array of documents to the insert[]
method. By default, MongoDB performs an ordered insert. With ordered inserts, if an error occurs during an insert of one of the documents, MongoDB returns on error without processing the remaining documents in the array.
The documents in the array do not need to have the same
fields. For instance, the first document in the array has an _id
field and a type
field. Because the second and third documents do not contain an _id
field, mongod
will create the _id
field for the second and third documents during the insert:
db.products.insert[ [ { _id: 11, item: "pencil", qty: 50, type: "no.2" }, { item: "pen", qty: 20 }, { item: "eraser", qty: 25 } ] ]
The operation inserted the following three documents:
{ "_id" : 11, "item" : "pencil", "qty" : 50, "type" : "no.2" } { "_id" : ObjectId["51e0373c6f35bd826f47e9a0"], "item" : "pen", "qty" : 20 } { "_id" : ObjectId["51e0373c6f35bd826f47e9a1"], "item" : "eraser", "qty" : 25 }
The following example performs an unordered insert of three documents. With unordered inserts, if an error occurs during an insert of one of the documents, MongoDB continues to insert the remaining documents in the array.
db.products.insert[ [ { _id: 20, item: "lamp", qty: 50, type: "desk" }, { _id: 21, item: "lamp", qty: 20, type: "floor" }, { _id: 22, item: "bulk", qty: 100 } ], { ordered: false } ]
The following operation to a replica set specifies a write concern of w: 2
with a wtimeout
of 5000
milliseconds. This operation either returns after the write propagates to both the primary and one secondary, or times out after 5 seconds.
db.products.insert[ { item: "envelopes", qty : 100, type: "Clasp" }, { writeConcern: { w: 2, wtimeout: 5000 } } ]
When passed a single document, insert[]
returns a WriteResult
object.
The
insert[]
returns a WriteResult[]
object that contains the status of the operation. Upon success, the
WriteResult[]
object contains information on the number of documents inserted:
WriteResult[{ "nInserted" : 1 }]
If the insert[]
method encounters write concern errors, the results include the
WriteResult.writeConcernError
field:
WriteResult[{ "nInserted" : 1, "writeConcernError"[{ "code" : 64, "errmsg" : "waiting for replication timed out", "errInfo" : { "wtimeout" : true, "writeConcern" : { // Added in MongoDB 4.4 "w" : "majority", "wtimeout" : 100, "provenance" : "getLastErrorDefaults" } } }]
Tip
See also:
If the insert[]
method encounters a non-write concern error, the
results include the WriteResult.writeError
field:
WriteResult[{ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.foo.$_id_ dup key: { : 1.0 }" } }]
When passed an array of documents, insert[]
returns a
BulkWriteResult[]
object. See BulkWriteResult[]
for details.