Skip to content

Commit cfaaba6

Browse files
committed
introduce bulk addDocuments to MongoCollection
1 parent a7e816e commit cfaaba6

3 files changed

Lines changed: 21 additions & 8 deletions

File tree

core/src/main/java/de/bwaldvogel/mongo/MongoCollection.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ default String getFullName() {
3535

3636
void addDocument(Document document);
3737

38+
default void addDocuments(List<Document> documents) {
39+
documents.forEach(this::addDocument);
40+
}
41+
3842
void removeDocument(Document document);
3943

4044
default void addDocumentIfMissing(Document document) {

core/src/main/java/de/bwaldvogel/mongo/backend/AbstractSynchronizedMongoCollection.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ public synchronized void addDocument(Document document) {
1919
super.addDocument(document);
2020
}
2121

22+
@Override
23+
public synchronized void addDocuments(List<Document> documents) {
24+
super.addDocuments(documents);
25+
}
26+
2227
@Override
2328
public synchronized Document findAndModify(Document query) {
2429
return super.findAndModify(query);

core/src/main/java/de/bwaldvogel/mongo/oplog/CollectionBackedOplog.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.List;
44
import java.util.UUID;
55
import java.util.function.Function;
6+
import java.util.stream.Collectors;
67
import java.util.stream.Stream;
78

89
import de.bwaldvogel.mongo.MongoBackend;
@@ -39,29 +40,32 @@ public void handleInsert(String namespace, List<Document> documents) {
3940
if (isOplogCollection(namespace)) {
4041
return;
4142
}
42-
documents.stream()
43+
final List<Document> oplogInsertDocuments = documents.stream()
4344
.map(document -> toOplogInsertDocument(namespace, document))
44-
.forEach(collection::addDocument);
45+
.collect(Collectors.toList());
46+
collection.addDocuments(oplogInsertDocuments);
4547
}
4648

4749
@Override
4850
public void handleUpdate(String namespace, Document selector, Document query, List<Object> modifiedIds) {
4951
if (isOplogCollection(namespace)) {
5052
return;
5153
}
52-
modifiedIds.forEach(id ->
53-
collection.addDocument(toOplogUpdateDocument(namespace, query, id))
54-
);
54+
final List<Document> oplogUpdateDocuments = modifiedIds.stream()
55+
.map(id -> toOplogUpdateDocument(namespace, query, id))
56+
.collect(Collectors.toList());
57+
collection.addDocuments(oplogUpdateDocuments);
5558
}
5659

5760
@Override
5861
public void handleDelete(String namespace, Document query, List<Object> deletedIds) {
5962
if (isOplogCollection(namespace)) {
6063
return;
6164
}
62-
deletedIds.forEach(id ->
63-
collection.addDocument(toOplogDeleteDocument(namespace, id))
64-
);
65+
final List<Document> oplogDeleteDocuments = deletedIds.stream()
66+
.map(id -> toOplogDeleteDocument(namespace, id))
67+
.collect(Collectors.toList());
68+
collection.addDocuments(oplogDeleteDocuments);
6569
}
6670

6771
@Override

0 commit comments

Comments
 (0)