Skip to content

Commit f9e7151

Browse files
authored
DOCSP-39699: Bulk writes (#83)
1 parent 0f4e862 commit f9e7151

File tree

2 files changed

+410
-48
lines changed

2 files changed

+410
-48
lines changed

source/includes/write/bulk-write.java

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
import com.mongodb.ConnectionString;
2+
import com.mongodb.MongoClientSettings;
3+
import com.mongodb.ServerApi;
4+
import com.mongodb.ServerApiVersion;
5+
6+
import com.mongodb.bulk.BulkWriteResult;
7+
import com.mongodb.client.model.InsertOneModel;
8+
import com.mongodb.client.model.UpdateOneModel;
9+
import com.mongodb.client.model.UpdateManyModel;
10+
import com.mongodb.client.model.ReplaceOneModel;
11+
import com.mongodb.client.model.DeleteOneModel;
12+
import com.mongodb.client.model.DeleteManyModel;
13+
import com.mongodb.client.model.BulkWriteOptions;
14+
import com.mongodb.reactivestreams.client.MongoCollection;
15+
16+
import org.bson.Document;
17+
18+
import com.mongodb.reactivestreams.client.MongoClient;
19+
import com.mongodb.reactivestreams.client.MongoClients;
20+
import com.mongodb.reactivestreams.client.MongoDatabase;
21+
import org.reactivestreams.Publisher;
22+
import reactor.core.publisher.Mono;
23+
24+
import java.util.Arrays;
25+
26+
import static com.mongodb.client.model.Filters.eq;
27+
import static com.mongodb.client.model.Updates.set;
28+
29+
class BulkWrite {
30+
public static void main(String[] args) throws InterruptedException {
31+
// Replace the placeholder with your Atlas connection string
32+
String uri = "<connection string>";
33+
34+
// Construct a ServerApi instance using the ServerApi.builder() method
35+
ServerApi serverApi = ServerApi.builder()
36+
.version(ServerApiVersion.V1)
37+
.build();
38+
39+
MongoClientSettings settings = MongoClientSettings.builder()
40+
.applyConnectionString(new ConnectionString(uri))
41+
.serverApi(serverApi)
42+
.build();
43+
44+
// Create a new client and connect to the server
45+
try (MongoClient mongoClient = MongoClients.create(settings)) {
46+
MongoDatabase sample_restaurants = mongoClient.getDatabase("sample_restaurants");
47+
MongoCollection<Document> restaurants = sample_restaurants.getCollection("restaurants");
48+
49+
50+
// start-bulk-insert-one
51+
InsertOneModel<Document> operation = new InsertOneModel<>(
52+
new Document("name", "Mongo's Deli")
53+
.append("cuisine", "Sandwiches"));
54+
// end-bulk-insert-one
55+
56+
// start-bulk-update-one
57+
UpdateOneModel<Document> operation = new UpdateOneModel<>(
58+
eq("name", "Mongo's Deli"),
59+
set("cuisine", "Sandwiches and Salads"));
60+
// end-bulk-update-one
61+
62+
// start-bulk-update-many
63+
UpdateManyModel<Document> operation = new UpdateManyModel<>(
64+
eq("name", "Mongo's Deli"),
65+
set("cuisine", "Sandwiches and Salads"));
66+
// end-bulk-update-many
67+
68+
// start-bulk-replace-one
69+
ReplaceOneModel<Document> operation = new ReplaceOneModel<>(
70+
eq("name", "Original Pizza"),
71+
new Document("name", "Mongo's Pizza")
72+
.append("borough", "Manhattan"));
73+
// end-bulk-replace-one
74+
75+
// start-bulk-delete-one
76+
DeleteOneModel<Document> operation = new DeleteOneModel<>(
77+
eq("restaurant_id", "5678"));
78+
// end-bulk-delete-one
79+
80+
// start-bulk-delete-many
81+
DeleteManyModel<Document> operation = new DeleteManyModel<>(
82+
eq("name", "Mongo's Deli"));
83+
// end-bulk-delete-many
84+
85+
// start-bulk-write-mixed
86+
Publisher<BulkWriteResult> bulkWritePublisher = restaurants.bulkWrite(
87+
Arrays.asList(new InsertOneModel<>(
88+
new Document("name", "Mongo's Deli")
89+
.append("cuisine", "Sandwiches")
90+
.append("borough", "Manhattan")
91+
.append("restaurant_id", "1234")),
92+
new InsertOneModel<>(new Document("name", "Mongo's Deli")
93+
.append("cuisine", "Sandwiches")
94+
.append("borough", "Brooklyn")
95+
.append("restaurant_id", "5678")),
96+
new UpdateManyModel<>(eq("name", "Mongo's Deli"),
97+
set("cuisine", "Sandwiches and Salads")),
98+
new DeleteOneModel<>(eq("restaurant_id", "1234"))));
99+
100+
BulkWriteResult bulkResult = Mono.from(bulkWritePublisher).block();
101+
102+
System.out.println(bulkResult.toString());
103+
// end-bulk-write-mixed
104+
105+
// start-bulk-write-unordered
106+
Publisher<BulkWriteResult> bulkWritePublisher = restaurants.bulkWrite(
107+
Arrays.asList(new InsertOneModel<>(
108+
new Document("name", "Mongo's Deli")
109+
.append("cuisine", "Sandwiches")
110+
.append("borough", "Manhattan")
111+
.append("restaurant_id", "1234")),
112+
new InsertOneModel<>(new Document("name", "Mongo's Deli")
113+
.append("cuisine", "Sandwiches")
114+
.append("borough", "Brooklyn")
115+
.append("restaurant_id", "5678")),
116+
new UpdateManyModel<>(eq("name", "Mongo's Deli"),
117+
set("cuisine", "Sandwiches and Salads")),
118+
new DeleteOneModel<>(eq("restaurant_id", "1234"))),
119+
new BulkWriteOptions().ordered(false));
120+
121+
BulkWriteResult bulkResult = Mono.from(bulkWritePublisher).block();
122+
123+
System.out.println(bulkResult.toString());
124+
// end-bulk-write-unordered
125+
126+
}
127+
}
128+
129+
}

0 commit comments

Comments
 (0)