mongodb - español - mongoose schema
¿Mangosta/MongoDB lanzando error de clave duplicada al guardar? (1)
De acuerdo con la documentación de MongoDB, una llamada para save
creará un nuevo documento o actualizará un documento existente si se proporciona _id
. La documentación de Mongoose es menos detallada y no se refiere a si se insertará o actualizará.
Estoy intentando usar la función de save
de Mongoose para actualizar un documento, pero sigo recibiendo el error:
{"error": {"nombre": "MongoError", "código": 11000, "err": "insertDocument :: provocada por :: 11000 E11000 índice de error de clave duplicada: staging.participants. $ _ id _ dup key: { : ObjectId (''5515a34ed65073ec234b5c5f'')} "}}
¿La función de save
de Mongoose realiza una inserción adicional como la función de save
de MongoDB o solo está realizando una inserción?
Lo que define si el save
será una inserción o una actualización es el indicador isNew
, como puede ver aquí .
Este indicador se establece automáticamente en false
cuando la instancia del documento se devuelve desde una consulta de búsqueda (o cualquiera de sus variaciones). Si está creando una instancia del documento manualmente, intente establecer este indicador en falso antes de guardarlo:
var instance = new Model({ ''_id'': ''...'', field: ''...'' });
instance.isNew = false;
instance.save(function(err) { /* ... */ });
También hay una función de init
, que inicializará el documento y automáticamente establecerá isNew
en false
:
var data = { ''_id'': ''...'', field: ''...'' };
var instance = new Model();
instance.init(data, {}, function(err) {
instance.save(function(err) { /* ... */ })
});