В двух словах, событие update
- это обновление документа без его замены.Событие replace
возникает при создании нового документа, заменяющего старый.
Простой пример:
replset:PRIMARY> db.test.find()
{
"_id": 0,
"txt": "qwerty"
}
Выполнение результатов update
:
replset:PRIMARY> db.test.update({_id:0}, {$set:{txt:'abc'}})
в этом событии изменений потока:
{ _id:
....
operationType: 'update',
....
Выполнение save
:
replset:PRIMARY> db.test.save({_id:0, txt:'qwerty'})
приводит к этому событию изменения потока:
{ _id:
....
operationType: 'replace',
....
При обновлении документа в Compassпривело к событию replace
, что означает, что Compass выполняет save
операцию в фоновом режиме вместо update
.Это имело бы смысл с точки зрения графического интерфейса, так как save
измененный документ легче вместо того, чтобы проверять разницу между старым документом и новым и создавать специальный запрос update
с определенным$set
операция, которая будет дорогой для вычисления.