If a client uses $set to add a field to an existing document during an update, it should set updatedExisting to true in the last-error document, but only so sets updatedExisting when $set replaces an existing field.
Expected behavior:
connecting to: test
> db.a.drop()
> db.a.insert({_id: 1})
> db.a.update({_id:1}, {a:2})
> db.getLastErrorObj()
{
"updatedExisting" : true,
"n" : 1,
"connectionId" : 6,
"err" : null,
"ok" : 1
}
> db.a.update({_id:1}, {a:3})
> db.getLastErrorObj()
{
"updatedExisting" : true,
"n" : 1,
"connectionId" : 6,
"err" : null,
"ok" : 1
}
Actual behavior:
connecting to: test
> db.a.drop()
> db.a.insert({_id: 1})
> db.a.update({_id:1}, {a:2})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 6, "err" : null, "ok" : 1 }
> db.a.update({_id:1}, {a:3})
> db.getLastErrorObj()
{
"updatedExisting" : true,
"n" : 1,
"connectionId" : 6,
"err" : null,
"ok" : 1
}