Com
replaceOne()
você só pode substituir o documento inteiro, enquanto updateOne()
permite a atualização de campos. Desde
replaceOne()
substitui todo o documento - os campos do documento antigo não contidos no novo serão perdidos. Com updateOne()
novos campos podem ser adicionados sem perder os campos do documento antigo. Por exemplo, se você tiver o seguinte documento:
{
"_id" : ObjectId("0123456789abcdef01234567"),
"my_test_key3" : 3333
}
Usando:
replaceOne({"_id" : ObjectId("0123456789abcdef01234567")}, { "my_test_key4" : 4})
resulta em:
{
"_id" : ObjectId("0123456789abcdef01234567"),
"my_test_key4" : 4.0
}
Usando:
updateOne({"_id" : ObjectId("0123456789abcdef01234567")}, {$set: { "my_test_key4" : 4}})
resulta em:
{
"_id" : ObjectId("0123456789abcdef01234567"),
"my_test_key3" : 3333.0,
"my_test_key4" : 4.0
}
Observe que com
updateOne()
você pode usar os operadores de atualização em documentos.