MongoDB
In this MongoDB tutorial we will learn to update documents.
Login to your MongoDB server and insert the following documents.
For this tutorial I will insert the documents in the subscription collection.
> db.subscription.insertMany([
{
"firstname": "John",
"lastname": "Doe",
"uid": 1,
"accountstatus": "ACTIVE",
"plan": "TRIAL15DAYS",
"modifiedAt": null,
"createdAt": new Date()
},
{
"firstname": "Jane",
"lastname": "Doe",
"uid": 2,
"accountstatus": "ACTIVE",
"plan": "PLAN30DAYS",
"modifiedAt": null,
"createdAt": new Date()
},
{
"firstname": "Jim",
"lastname": "Doe",
"uid": 3,
"accountstatus": "SUSPENDED",
"plan": "PLAN60DAYS",
"modifiedAt": null,
"createdAt": new Date()
},
{
"firstname": "Alice",
"lastname": "Doe",
"uid": 4,
"accountstatus": "ACTIVE",
"plan": "PLAN1YEAR",
"modifiedAt": null,
"createdAt": new Date()
}
])
Note! We are using new Date()
to set the createdAt to current date time.
To update a single document we use updateOne
method.
db.collectionName.updateOne(filter, update)
Where, filter is the condition to get the required document and update is the part of the document we want to update.
In the following example we are updating the account status of user having uid
equal to 3
from SUSPENDED to ACTIVE.
> db.subscription.updateOne(
{ "uid": 3 },
{
$set: { "accountstatus": "ACTIVE" },
$currentDate: { "modifiedAt": true }
}
)
We use $set
operator to update the value of accountstatus.
We use $currentDate
operator to set the modifiedAt to current date.
If we now fetch the above document we will get the following.
> db.subscription.find({ "uid": 3 }).pretty()
{
"_id" : ObjectId("5d7715d5b385796f53d4c8ff"),
"firstname" : "Jim",
"lastname" : "Doe",
"uid" : 3,
"accountstatus" : "ACTIVE",
"plan" : "PLAN60DAYS",
"modifiedAt" : ISODate("2019-09-10T03:18:42.406Z"),
"createdAt" : ISODate("2019-09-10T03:17:41.130Z")
}
updateOne
methodWe can use the updateOne
method to update an existing document and also insert a new document if it does not exists.
db.collectionName.updateOne(filter, update, option)
In the option set the upsert
to true
. This will help to insert new document if it doesn't exists.
In the following example we are inserting a new document in the subscription
collection using the updateOne
method.
> db.subscription.updateOne(
{ "uid": 5 },
{
$set: {
"firstname": "Bob",
"lastname": "Doe",
"uid": 5,
"accountstatus": "ACTIVE",
"plan": "PLAN1YEAR",
"modifiedAt": null,
"createdAt": new Date()
}
},
{
upsert: true
}
)
If we now fetch the newly inserted document we will get the following result.
> db.subscription.find({ "uid": 5 }).pretty()
{
"_id" : ObjectId("5d771bc30a7168b744863bc6"),
"uid" : 5,
"accountstatus" : "ACTIVE",
"createdAt" : ISODate("2019-09-10T03:42:59.876Z"),
"firstname" : "Bob",
"lastname" : "Doe",
"modifiedAt" : null,
"plan" : "PLAN1YEAR"
}
To update multiple documents we use the updateMany
method.
In the following example we are updating the plan to PLAN60DAYS for uid 2, 3 and 4.
> db.subscription.updateMany(
{ "uid": { $in: [2, 3, 4] } },
{
$set: { "plan": "PLAN60DAYS" },
$currentDate: { "modifiedAt": true }
}
)
Learn to filter document using $in
and other operators in the MongoDB - Query Document tutorial.
We use the replaceOne
method to replace the entire content of a document except the _id
.
In the following example we are replacing the content of document having uid equal to 5.
> db.subscription.replaceOne(
{ "uid": 5 },
{
"firstname": "Bob",
"lastname": "Doe",
"uid": 5,
"accountstatus": "ACTIVE",
"plan": "PLAN90DAYS",
"modifiedAt": new Date(),
"createdAt": new Date()
}
)
We can also use replaceOne
method to insert new document if it does not exists by setting the upsert
option to true
.
> db.subscription.replaceOne(
{ "uid": 6 },
{
"firstname": "Billy",
"lastname": "Doe",
"uid": 6,
"accountstatus": "ACTIVE",
"plan": "PLAN90DAYS",
"modifiedAt": new Date(),
"createdAt": new Date()
},
{
upsert: true
}
)
ADVERTISEMENT