MongoDB не будет обновлять документ, если он уже находится в «обновленном» состоянии.
Например, при использовании оболочки mongo
:
> db.test.find()
{"_id": 0, "a": 0}
> db.test.update({_id:0}, {$set:{a:1}})
WriteResult({
"nMatched": 1,
"nUpserted": 0,
"nModified": 1
})
, поскольку a
- это 0
и мы устанавливаем a
в 1
, обновление изменило документ (nMatched: 1
, nModified: 1
).
> db.test.find()
{"_id": 0, "a": 1}
> db.test.update({_id:0}, {$set:{a:1}})
WriteResult({
"nMatched": 1,
"nUpserted": 0,
"nModified": 0
})
Если мы пытаемся установить a
в1
снова оператор update нашел документ, но понял, что ему не нужно выполнять какую-либо работу (nMatched: 1
, nModified: 0
).