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

Mongoose:atomic FindOne-Or-Insert (), no actualice la instancia existente si la encuentra

Puede usar $setOnInsert en su parámetro de actualización para que solo se aplique en el caso de inserción; con la actualización convirtiéndose en no operativa en el caso de que el documento ya exista:

return await Foo.findOneAndUpdate(
  filter,                 // find a document with that filter
  {$setOnInsert: fooDoc}, // document to insert when nothing was found
  { upsert: true, new: true, runValidators: true }
)

Tenga en cuenta que también debe crear un índice único sobre los campos incluidos en su filter y luego manejar la posibilidad de un error duplicado. Consulte esta publicación para los detalles por qué.