spring-projects / spring-data-mongodb

Provides support to increase developer productivity in Java when using MongoDB. Uses familiar Spring concepts such as a template classes for core API usage and lightweight repository style data access.
https://spring.io/projects/spring-data-mongodb/
Apache License 2.0
1.62k stars 1.08k forks source link

Slow BulkOperations.upsert() because of default multi=true option [DATAMONGO-2425] #3283

Open spring-projects-issues opened 4 years ago

spring-projects-issues commented 4 years ago

szisiu opened DATAMONGO-2425 and commented

By default in BulkOperations.java and its implementation DefaultBulkOperations.java upsert method uses multi=true option behind the scenes and it cannot be configured by a user. It affects query performance for bigger collections when single upsert is needed.

I'd suggest to add new methods with additional upsert parameters or expose update(Query query, Update update, boolean upsert, boolean multi) as public method so anyone could use proper setting for his use case. 


Affects: 2.1.13 (Lovelace SR13), 2.2.2 (Moore SR2)

Strat1987 commented 3 years ago

We're also missing an option to provide both multi and upsert for an update. Perhaps add a upsertMany() method or expose the one with the boolean flags.