sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoose upsert no crea una propiedad de esquema predeterminada

Lo que sucede es que ninguno de los valores de validación, middleware o predeterminados de Mongoose se usa al llamar a cualquiera de la familia de métodos de "actualización", como findByIdAndUpdate . Solo se invocan mediante llamadas a save o create .

La razón de esto es que las llamadas de "actualización" son transferencias efectivas al controlador nativo, y Mongoose solo proporciona conversión de tipo de los campos según la definición del esquema.

Actualización de Mongoose 4.0

Mongoose ahora admite la configuración predeterminada cuando se crea un nuevo documento durante una update , findOneAndUpdate o findByIdAndUpdate trastornar Establecer el setDefaultsOnInsert opción a true para habilitar esto. Esto usa el $setOnInsert operador para crear los valores predeterminados al insertar.

var queryOptions = {
    upsert: true,
    setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...