Tengo un documento en la colección testcol en MongoDB como este:
{ _id:111, "xxx":"aaa", "yyy":"bbb" }Quiero actualizar el campo yyy en el documento, si se encuentra el campo, actualícelo y si no se encuentra, no haga nada.
Cuando ejecuto mi comando de actualización mongo db como db.testcol.update({_id:0},{$set:{"zzz":"ccc"}},{upsert: false}) . Intencionalmente di el campo como "zzz" en el comando de actualización para que no haga nada. Pero cuando ejecuto el comando de actualización anterior, insertó el nuevo campo "zzz" en el documento anterior, aunque upsert se dio como falso. Sé que upsert no insertará/insertará documento y no campo, pero como soy nuevo en MongoDB, solo lo estaba intentando. ¿Alguien puede decirme cómo abordar este problema?
Estás usando upsert mal. Consulte los documentos de mongo aquí
Si upsert es verdadero y ningún documento coincide con los criterios de consulta, update() inserta un solo documento. La actualización crea el nuevo documento. Si upsert es verdadero y hay documentos que coinciden con los criterios de consulta, update() realiza una actualización.