MongoDB - Insert Single Document in a Collection using insertOne()
In MongoDB, a collection represents a table in RDBMS and a document is like a record in a table. Learn how to insert a single document into a collection.
MongoDB provides the following methods to insert documents into a collection:
- insertOne() - Inserts a single document into a collection.
- insert() - Inserts one or more documents into a collection.
- insertMany() - Insert multiple documents into a collection.
insertOne()
Use the db.<collection>.insertOne()
method to insert a single document in a collection.db
points to the current database, <collection>
is existing or a new collection name.
Syntax:
db.collection.insertOne(document, [writeConcern])
Parameters:
- document: A document to insert into the collection.
- writeConcern: Optional. A document expressing the write concern to override the default write concern.
The following inserts a document into employees
collection.
db.employees.insertOne({
firstName: "John",
lastName: "King",
email: "[email protected]"
})
{
acknowledged: true,
insertedId: ObjectId("616d44bea861820797edd9b0")
}
In the above example, we passed a document to the insertOne()
method. Notice that we haven't specified _id
field. So, MongoDB inserts a document to a collection with the auto-generated unique _id
field. It returns an object with a boolean field acknowledged
that indicates whether the insert operation is successful or not, and insertedId
field with the newly inserted _id
value.
The following shows the insert operation in the mongosh shell:
Use the find()
to list all data of a collection, and the pretty()
method to format resulted data.
db.employees.find().pretty()
{
_id: ObjectId("616d44bea861820797edd9b0"),
firstName: "John",
lastName: "King",
email: "[email protected]"
}
MongoDB is NoSQL database. So, it does not enforce schema to any collection. It means you can insert a document with any fields to a collection. For example, the following inserts a document with different fields to the employees
collection.
db.employees.insertOne({
fName: "John",
lName: "King",
emailid: "[email protected]"
})
{
acknowledged: true,
insertedId: ObjectId("546d44bea861820797ed214")
}
It is recommended to keep the field names same in all the documents of a collection to manage them easily.
Insert _id Manually
It is not necessary to insert auto-generated _id
value. You can manually specify a unique value for the _id
field, as shown below.
db.employees.insertOne({
_id:"1",
firstName: "John",
lastName: "King",
email: "[email protected]"
})
{
acknowledged: true,
insertedId: 1
}
Note that while adding your custom value to _id
field, a value must be unique; otherwise, it will throw an error. The following tries to add the same _id
value.
db.employees.insertOne({
_id:"1",
firstName: "John",
lastName: "King",
email: "[email protected]"
})
MongoServerError: E11000 duplicate key error collection: humanResourceDB.employees index: _id_ dup key: { _id: "1" }