Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

295
Views
Spring mongodb agrega o actualiza una lista de documentos

Tengo una lista de registros como

 [ {"id":"1", "name":"a", "user":"u1"}, {"id":"2", "name":"b", "user":"u1"}, {"id":"3", "name":"c", "user":"u1"} ]

Ahora, según si una entrada ya existe o no en la base de datos, debe actualizar o insertar el documento. También para la actualización existe la condición de que el valor del campo de user existente debe coincidir con el valor proporcionado para user en el documento.

Por supuesto que puedo ejecutar la lista en un bucle y usar

 mongoOperations.save(...);

Pero si tengo una lista enorme, tendré que hacer una operación de db por cada entrada, lo que no creo que sea eficiente. ¿Hay alguna otra forma eficiente de realizar esta operación?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si está utilizando el repositorio CRUD, el repositorio CRUD proporciona el método save () que se puede usar para la entidad única (mongoCollection) o puede usar el método de guardado sobrecargado

 <S extends T> List<S> saveAll(Iterable<S> entites)

que puede tomar Arraylist y guardar el objeto arraylist. No es necesario utilizar los bucles.

Puede ver el siguiente ejemplo en el que la clase InventoryService crea 3 objetos de inventario y agrega todo en ArrayList y finalmente pasa esto al repositorio de inventario, que es un repositorio CRUD.

 @Service public class InventoryService { private static final Logger LOGGER = LoggerFactory.getLogger(InventoryService.class); @Autowired private InventoryRepository inventoryRepository; public void aveInventoryDetails() { List<Inventory> inventoryList = new ArrayList<Inventory>(); inventoryList.add(new Inventory("500", 10)); inventoryList.add(new Inventory("600", 20)); inventoryList.add(new Inventory("700", 30)); try { inventoryRepository.saveAll(inventoryList); } catch (Exception e) { e.printStackTrace(); } } }

Repositorio Mongo de muestra

 package com.bjs.repository; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.mongodb.repository.MongoRepository; import com.bjs.model.Inventory; public interface InventoryRepository extends MongoRepository<Inventory, String> { // empty as not defining any new method , we can use the existing save method }

Para referencia: http://docs.spring.io/autorepo/docs/spring-data-commons/1.9.1.RELEASE/api/org/springframework/data/repository/CrudRepository.html#save-java.lang.Iterable -

about 4 years ago · Santiago Trujillo Report

0

Puede usar mongoTemplate.updateMulti() para actualizar la lista de registros como se muestra a continuación

 Query query = new Query(); query.addCriteria(Criteria.where("filteringField").is("filteringFieldValue)); Update update = new Update(); update.set("fieldToBeUpdated", "fieldToBeUpdatedValue"); mongoTemplate.updateMulti(query, update, YourClass.class);
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!