MongoDB - Atualizar Documento
MongoDB's update() e save()métodos são usados para atualizar o documento em uma coleção. O método update () atualiza os valores no documento existente enquanto o método save () substitui o documento existente pelo documento passado no método save ().
Método MongoDB Update ()
O método update () atualiza os valores no documento existente.
Sintaxe
A sintaxe básica de update() método é o seguinte -
>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
Exemplo
Considere que a coleção mycol tem os seguintes dados.
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
O exemplo a seguir definirá o novo título 'Novo Tutorial do MongoDB' dos documentos cujo título é 'Visão geral do MongoDB'.
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
>
Por padrão, o MongoDB atualizará apenas um único documento. Para atualizar vários documentos, você precisa definir um parâmetro 'multi' como verdadeiro.
>db.mycol.update({'title':'MongoDB Overview'},
{$set:{'title':'New MongoDB Tutorial'}},{multi:true})
Método Save () do MongoDB
o save() método substitui o documento existente pelo novo documento passado no método save ().
Sintaxe
A sintaxe básica do MongoDB save() método é mostrado abaixo -
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
Exemplo
O exemplo a seguir substituirá o documento pelo _id '5983548781331adf45ec5'.
>db.mycol.save(
{
"_id" : ObjectId("507f191e810c19729de860ea"),
"title":"Tutorials Point New Topic",
"by":"Tutorials Point"
}
)
WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("507f191e810c19729de860ea")
})
>db.mycol.find()
{ "_id" : ObjectId("507f191e810c19729de860e6"), "title":"Tutorials Point New Topic",
"by":"Tutorials Point"}
{ "_id" : ObjectId("507f191e810c19729de860e6"), "title":"NoSQL Overview"}
{ "_id" : ObjectId("507f191e810c19729de860e6"), "title":"Tutorials Point Overview"}
>
Método findOneAndUpdate () do MongoDB
o findOneAndUpdate() método atualiza os valores no documento existente.
Sintaxe
A sintaxe básica de findOneAndUpdate() método é o seguinte -
>db.COLLECTION_NAME.findOneAndUpdate(SELECTIOIN_CRITERIA, UPDATED_DATA)
Exemplo
Suponha que criamos uma coleção chamada empDetails e inserimos três documentos nela, conforme mostrado abaixo -
> db.empDetails.insertMany(
[
{
First_Name: "Radhika",
Last_Name: "Sharma",
Age: "26",
e_mail: "[email protected]",
phone: "9000012345"
},
{
First_Name: "Rachel",
Last_Name: "Christopher",
Age: "27",
e_mail: "[email protected]",
phone: "9000054321"
},
{
First_Name: "Fathima",
Last_Name: "Sheik",
Age: "24",
e_mail: "[email protected]",
phone: "9000054321"
}
]
)
O exemplo a seguir atualiza os valores de idade e e-mail do documento com o nome 'Radhika'.
> db.empDetails.findOneAndUpdate(
{First_Name: 'Radhika'},
{ $set: { Age: '30',e_mail: '[email protected]'}}
)
{
"_id" : ObjectId("5dd6636870fb13eec3963bf5"),
"First_Name" : "Radhika",
"Last_Name" : "Sharma",
"Age" : "30",
"e_mail" : "[email protected]",
"phone" : "9000012345"
}
Método MongoDB updateOne ()
Este método atualiza um único documento que corresponde ao filtro fornecido.
Sintaxe
A sintaxe básica do método updateOne () é a seguinte -
>db.COLLECTION_NAME.updateOne(<filter>, <update>)
Exemplo
> db.empDetails.updateOne(
{First_Name: 'Radhika'},
{ $set: { Age: '30',e_mail: '[email protected]'}}
)
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 0 }
>
Método MongoDB updateMany ()
O método updateMany () atualiza todos os documentos que correspondem ao filtro fornecido.
Sintaxe
A sintaxe básica do método updateMany () é a seguinte -
>db.COLLECTION_NAME.update(<filter>, <update>)
Exemplo
> db.empDetails.updateMany(
{Age:{ $gt: "25" }},
{ $set: { Age: '00'}}
)
{ "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }
Você pode ver os valores atualizados se recuperar o conteúdo do documento usando o método find conforme mostrado abaixo -
> db.empDetails.find()
{ "_id" : ObjectId("5dd6636870fb13eec3963bf5"), "First_Name" : "Radhika", "Last_Name" : "Sharma", "Age" : "00", "e_mail" : "[email protected]", "phone" : "9000012345" }
{ "_id" : ObjectId("5dd6636870fb13eec3963bf6"), "First_Name" : "Rachel", "Last_Name" : "Christopher", "Age" : "00", "e_mail" : "[email protected]", "phone" : "9000054321" }
{ "_id" : ObjectId("5dd6636870fb13eec3963bf7"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "[email protected]", "phone" : "9000054321" }
>