Si en mi código estoy actualizando un documento en mongoDB, ¿es mejor verificar si los campos indexados cambiaron y actualizarlos solo si cambiaron (hay otros campos que deberíamos actualizar de todos modos), o no habrá ningún efecto en guardar indexado campos al valor existente? ¿Mongo actualizará inmediatamente el índice, o si ve que nada realmente cambió, no intentará actualizar el índice?
la operación de actualización cambia el valor y su índice solo si el valor es diferente. ejemplo:
PRIMARY> db.test.find() { "_id" : ObjectId("61eef83f6b9fd30eb14ad43b"), "test" : 1 } PRIMARY> db.test.update({test:1},{$set:{test:1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
Como puede ver nModified: 0 y en el oplog no aparece nada, lo que significa que la operación no tiene ningún efecto ...
Si el valor es diferente se actualizará inmediatamente también en el índice...